mirror of
https://github.com/Doodle3D/doodle3d-firmware.git
synced 2024-11-17 19:17:57 +01:00
Extract logger to separate module; update code and package Makefile to reflect new structure; rename wfcf to d3dapi; add dependency on usb ACM driver (required for communication with arduino).
This commit is contained in:
parent
cf0f7f594d
commit
f298fbf0db
47
Makefile
47
Makefile
@ -32,7 +32,7 @@ define Package/wifibox
|
|||||||
# DEFAULT:=y
|
# DEFAULT:=y
|
||||||
TITLE:=Doodle3D WifiBox firmware
|
TITLE:=Doodle3D WifiBox firmware
|
||||||
URL:=http://www.doodle3d.com/wifibox
|
URL:=http://www.doodle3d.com/wifibox
|
||||||
DEPENDS:=+lua +libuci-lua +libiwinfo-lua +uhttpd
|
DEPENDS:=+lua +libuci-lua +libiwinfo-lua +uhttpd +kmod-usb-acm
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/wifibox/description
|
define Package/wifibox/description
|
||||||
@ -71,45 +71,50 @@ endef
|
|||||||
# command to copy the binary file from its current location (in our case the build
|
# command to copy the binary file from its current location (in our case the build
|
||||||
# directory) to the install directory.
|
# directory) to the install directory.
|
||||||
|
|
||||||
AUTOWIFI_BASE_DIR := $(PKG_BUILD_DIR)/autowifi
|
WIFIBOX_BASE_DIR := $(PKG_BUILD_DIR)
|
||||||
GPX_BASE_DIR := $(PKG_BUILD_DIR)/util/GPX.git
|
GPX_BASE_DIR := $(PKG_BUILD_DIR)/util/GPX.git
|
||||||
|
TGT_LUA_DIR_SUFFIX := usr/share/lua/wifibox
|
||||||
|
|
||||||
define Package/wifibox/install
|
define Package/wifibox/install
|
||||||
### create required directories (autowifi)
|
### create required directories (autowifi)
|
||||||
|
|
||||||
# $(INSTALL_DIR) $(1)/usr/share/lua/autowifi
|
# $(INSTALL_DIR) $(1)/$(TGT_LUA_DIR_SUFFIX)
|
||||||
$(INSTALL_DIR) $(1)/usr/share/lua/autowifi/admin
|
$(INSTALL_DIR) $(1)/$(TGT_LUA_DIR_SUFFIX)/network
|
||||||
# $(INSTALL_DIR) $(1)/usr/share/lua/autowifi/ext
|
$(INSTALL_DIR) $(1)/$(TGT_LUA_DIR_SUFFIX)/rest
|
||||||
# $(INSTALL_DIR) $(1)/usr/share/lua/autowifi/ext/www
|
$(INSTALL_DIR) $(1)/$(TGT_LUA_DIR_SUFFIX)/script
|
||||||
$(INSTALL_DIR) $(1)/usr/share/lua/autowifi/ext/www/cgi-bin
|
$(INSTALL_DIR) $(1)/$(TGT_LUA_DIR_SUFFIX)/util
|
||||||
|
# $(INSTALL_DIR) $(1)/$(TGT_LUA_DIR_SUFFIX)/www
|
||||||
|
# $(INSTALL_DIR) $(1)/$(TGT_LUA_DIR_SUFFIX)/www/cgi-bin
|
||||||
|
$(INSTALL_DIR) $(1)/$(TGT_LUA_DIR_SUFFIX)/www/wifibox
|
||||||
$(INSTALL_DIR) $(1)/etc/init.d
|
$(INSTALL_DIR) $(1)/etc/init.d
|
||||||
$(INSTALL_DIR) $(1)/www/cgi-bin
|
$(INSTALL_DIR) $(1)/www/cgi-bin
|
||||||
|
|
||||||
### create all files in /usr/share/lua/autowifi (autowifi)
|
### create all files in /usr/share/lua/autowifi (autowifi)
|
||||||
|
|
||||||
$(CP) $(AUTOWIFI_BASE_DIR)/*.lua $(1)/usr/share/lua/autowifi/
|
$(CP) $(WIFIBOX_BASE_DIR)/*.lua $(1)/$(TGT_LUA_DIR_SUFFIX)/
|
||||||
$(CP) $(AUTOWIFI_BASE_DIR)/admin/* $(1)/usr/share/lua/autowifi/admin/
|
$(CP) $(WIFIBOX_BASE_DIR)/network/*.lua $(1)/$(TGT_LUA_DIR_SUFFIX)/network/
|
||||||
|
$(CP) $(WIFIBOX_BASE_DIR)/rest/*.lua $(1)/$(TGT_LUA_DIR_SUFFIX)/rest/
|
||||||
|
$(CP) $(WIFIBOX_BASE_DIR)/util/*.lua $(1)/$(TGT_LUA_DIR_SUFFIX)/util/
|
||||||
|
|
||||||
$(CP) $(AUTOWIFI_BASE_DIR)/ext/autowifi.js $(1)/usr/share/lua/autowifi/ext
|
$(CP) $(WIFIBOX_BASE_DIR)/script/wifibox_init $(1)/$(TGT_LUA_DIR_SUFFIX)/script
|
||||||
$(CP) $(AUTOWIFI_BASE_DIR)/ext/autowifi_init $(1)/usr/share/lua/autowifi/ext
|
$(CP) $(WIFIBOX_BASE_DIR)/script/d3dapi $(1)/$(TGT_LUA_DIR_SUFFIX)/script
|
||||||
$(CP) $(AUTOWIFI_BASE_DIR)/ext/wfcf $(1)/usr/share/lua/autowifi/ext
|
|
||||||
|
|
||||||
$(CP) $(AUTOWIFI_BASE_DIR)/ext/www/.autowifi-inplace $(1)/usr/share/lua/autowifi/ext/www
|
$(CP) $(WIFIBOX_BASE_DIR)/www/wifibox/* $(1)/$(TGT_LUA_DIR_SUFFIX)/www/wifibox/
|
||||||
$(CP) $(AUTOWIFI_BASE_DIR)/ext/www/index.html $(1)/usr/share/lua/autowifi/ext/www
|
$(CP) $(WIFIBOX_BASE_DIR)/script/d3dapi $(1)/www/cgi-bin
|
||||||
$(LN) -s /usr/share/lua/autowifi/admin $(1)/usr/share/lua/autowifi/ext/www
|
|
||||||
$(LN) -s /usr/share/lua/autowifi/ext/wfcf $(1)/usr/share/lua/autowifi/ext/www/cgi-bin
|
# $(CP) $(WIFIBOX_BASE_DIR)/www/.autowifi-inplace $(1)/$(TGT_LUA_DIR_SUFFIX)/www
|
||||||
|
|
||||||
ifeq ($(CONFIG_WIFIBOX_DEVEL_PACKAGE),y)
|
ifeq ($(CONFIG_WIFIBOX_DEVEL_PACKAGE),y)
|
||||||
$(INSTALL_DIR) $(1)/usr/share/lua/autowifi/misc
|
# $(INSTALL_DIR) $(1)/$(TGT_LUA_DIR_SUFFIX)/misc
|
||||||
$(CP) $(AUTOWIFI_BASE_DIR)/misc/collect-code.sh $(1)/usr/share/lua/autowifi/misc/
|
# $(CP) $(WIFIBOX_BASE_DIR)/../misc/collect-code.sh $(1)/$(TGT_LUA_DIR_SUFFIX)/misc/
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
### create links elsewhere in the system (autowifi)
|
### create links elsewhere in the system (autowifi)
|
||||||
|
|
||||||
$(LN) -s /usr/share/lua/autowifi/ext/wfcf $(1)/www/cgi-bin
|
$(LN) -s /$(TGT_LUA_DIR_SUFFIX)/script/d3dapi $(1)/www/cgi-bin
|
||||||
$(LN) -s /usr/share/lua/autowifi/admin $(1)/www
|
$(LN) -s /$(TGT_LUA_DIR_SUFFIX)/www/wifibox $(1)/www
|
||||||
$(LN) -s /usr/share/lua/autowifi/ext/autowifi_init $(1)/etc/init.d/autowifi_init
|
$(LN) -s /$(TGT_LUA_DIR_SUFFIX)/script/wifibox_init $(1)/etc/init.d/wifibox_init
|
||||||
|
|
||||||
### install gpx utility
|
### install gpx utility
|
||||||
$(INSTALL_DIR) $(1)/usr/bin
|
$(INSTALL_DIR) $(1)/usr/bin
|
||||||
|
51
src/logger.lua
Normal file
51
src/logger.lua
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
local logLevel, logVerbose, logStream
|
||||||
|
|
||||||
|
M.LEVEL = {"debug", "info", "warn", "error", "fatal"}
|
||||||
|
|
||||||
|
--M.LEVEL already has idx=>name entries, now create name=>idx entries
|
||||||
|
for i,v in ipairs(M.LEVEL) do
|
||||||
|
M.LEVEL[v] = i
|
||||||
|
end
|
||||||
|
|
||||||
|
function M:init(level, verbose, stream)
|
||||||
|
logLevel = level or M.LEVEL.warn
|
||||||
|
logVerbose = verbose or false
|
||||||
|
logStream = stream or io.stdout
|
||||||
|
end
|
||||||
|
|
||||||
|
local function log(level, msg, verbose)
|
||||||
|
if level >= logLevel then
|
||||||
|
local now = os.date("%m-%d %H:%M:%S")
|
||||||
|
local i = debug.getinfo(3) --the stack frame just above the logger call
|
||||||
|
local v = verbose
|
||||||
|
if v == nil then v = logVerbose end
|
||||||
|
local name = i.name or "(nil)"
|
||||||
|
local vVal = "nil"
|
||||||
|
local m = (type(msg) == "string") and msg or M:dump(msg)
|
||||||
|
if v then logStream:write(now .. " (" .. M.LEVEL[level] .. ") \t" .. m .. " [" .. name .. "@" .. i.short_src .. ":" .. i.linedefined .. "]\n")
|
||||||
|
else logStream:write(now .. " (" .. M.LEVEL[level] .. ") \t" .. m .. "\n") end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function M:dump(o)
|
||||||
|
if type(o) == 'table' then
|
||||||
|
local s = '{ '
|
||||||
|
for k,v in pairs(o) do
|
||||||
|
if type(k) ~= 'number' then k = '"'..k..'"' end
|
||||||
|
s = s .. '['..k..'] = ' .. M:dump(v) .. ','
|
||||||
|
end
|
||||||
|
return s .. '} '
|
||||||
|
else
|
||||||
|
return tostring(o)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function M:debug(msg, verbose) log(M.LEVEL.debug, msg, verbose); return true end
|
||||||
|
function M:info(msg, verbose) log(M.LEVEL.info, msg, verbose); return true end
|
||||||
|
function M:warn(msg, verbose) log(M.LEVEL.warn, msg, verbose); return true end
|
||||||
|
function M:error(msg, verbose) log(M.LEVEL.error, msg, verbose); return false end
|
||||||
|
function M:fatal(msg, verbose) log(M.LEVEL.fatal, msg, verbose); return false end
|
||||||
|
|
||||||
|
return M
|
@ -17,6 +17,7 @@
|
|||||||
io.write ("Content-type: text/plain\r\n\r\n")
|
io.write ("Content-type: text/plain\r\n\r\n")
|
||||||
|
|
||||||
local u = require("util")
|
local u = require("util")
|
||||||
|
local l = require("logger")
|
||||||
local wifi = require("wifihelper")
|
local wifi = require("wifihelper")
|
||||||
local reconf = require("reconf")
|
local reconf = require("reconf")
|
||||||
local uci = require("uci").cursor()
|
local uci = require("uci").cursor()
|
||||||
@ -27,7 +28,7 @@ local argOperation, argDevice, argSsid, argPhrase, argRecreate
|
|||||||
local errortext = nil
|
local errortext = nil
|
||||||
|
|
||||||
function init()
|
function init()
|
||||||
u:initlog(u.LOG_LEVEL.debug, true, io.stderr)
|
l:init(l.LEVEL.debug, true, io.stderr)
|
||||||
local qs = os.getenv("QUERY_STRING")
|
local qs = os.getenv("QUERY_STRING")
|
||||||
local urlargs = {}
|
local urlargs = {}
|
||||||
urlcode.parsequery(qs, urlargs)
|
urlcode.parsequery(qs, urlargs)
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
local u = require("util")
|
local u = require("util")
|
||||||
|
local l = require("logger")
|
||||||
local uci = require("uci").cursor()
|
local uci = require("uci").cursor()
|
||||||
|
|
||||||
local M = {}
|
local M = {}
|
||||||
@ -44,10 +45,10 @@ function M.switchConfiguration(components)
|
|||||||
for k,v in pairs(components) do
|
for k,v in pairs(components) do
|
||||||
local fname = k .. "_" .. v
|
local fname = k .. "_" .. v
|
||||||
if type(reconf[fname]) == "function" then
|
if type(reconf[fname]) == "function" then
|
||||||
u:logdebug("reconfiguring component '" .. k .. "' (" .. v .. ")")
|
l:debug("reconfiguring component '" .. k .. "' (" .. v .. ")")
|
||||||
reconf[fname](dirtyList)
|
reconf[fname](dirtyList)
|
||||||
else
|
else
|
||||||
u:logwarn("unknown component or action '" .. fname .. "' skipped")
|
l:warn("unknown component or action '" .. fname .. "' skipped")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -61,12 +62,12 @@ function M.switchConfiguration(components)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function M.commitComponent(c)
|
function M.commitComponent(c)
|
||||||
u:loginfo("committing component '" .. c .. "'")
|
l:info("committing component '" .. c .. "'")
|
||||||
uci:commit(c)
|
uci:commit(c)
|
||||||
end
|
end
|
||||||
|
|
||||||
function M.reloadComponent(c, silent)
|
function M.reloadComponent(c, silent)
|
||||||
u:loginfo("reloading component '" .. c .. "'")
|
l:info("reloading component '" .. c .. "'")
|
||||||
if silent ~= nil and silent then os.execute("/etc/init.d/" .. c .. " reload &> /dev/null")
|
if silent ~= nil and silent then os.execute("/etc/init.d/" .. c .. " reload &> /dev/null")
|
||||||
else os.execute("/etc/init.d/" .. c .. " reload") end
|
else os.execute("/etc/init.d/" .. c .. " reload") end
|
||||||
end
|
end
|
||||||
@ -115,7 +116,7 @@ function reconf.apnet_rm(dirtyList)
|
|||||||
uci:foreach("wireless", "wifi-iface", function(s)
|
uci:foreach("wireless", "wifi-iface", function(s)
|
||||||
if s.ssid == wifi.AP_SSID then sname = s[".name"]; return false end
|
if s.ssid == wifi.AP_SSID then sname = s[".name"]; return false end
|
||||||
end)
|
end)
|
||||||
if sname == nil then return u:loginfo("AP network configuration does not exist, nothing to remove") end
|
if sname == nil then return l:info("AP network configuration does not exist, nothing to remove") end
|
||||||
uci:delete("wireless", sname)
|
uci:delete("wireless", sname)
|
||||||
reloadBit(dirtyList, "network"); commitBit(dirtyList, "wireless")
|
reloadBit(dirtyList, "network"); commitBit(dirtyList, "wireless")
|
||||||
end
|
end
|
||||||
@ -178,15 +179,15 @@ end
|
|||||||
function reconf.dnsredir_add(dirtyList)
|
function reconf.dnsredir_add(dirtyList)
|
||||||
local redirText = "/#/" .. wifi.AP_ADDRESS
|
local redirText = "/#/" .. wifi.AP_ADDRESS
|
||||||
local sname = u.getUciSectionName("dhcp", "dnsmasq")
|
local sname = u.getUciSectionName("dhcp", "dnsmasq")
|
||||||
if sname == nil then return u:logerror("dhcp config does not contain a dnsmasq section") end
|
if sname == nil then return l:error("dhcp config does not contain a dnsmasq section") end
|
||||||
if uci:get("dhcp", sname, "address") ~= nil then return u:logdebug("DNS address redirection already in place, not re-adding", false) end
|
if uci:get("dhcp", sname, "address") ~= nil then return l:debug("DNS address redirection already in place, not re-adding", false) end
|
||||||
|
|
||||||
uci:set("dhcp", sname, "address", {redirText})
|
uci:set("dhcp", sname, "address", {redirText})
|
||||||
commitBit(dirtyList, "dhcp"); reloadBit(dirtyList, "dnsmasq")
|
commitBit(dirtyList, "dhcp"); reloadBit(dirtyList, "dnsmasq")
|
||||||
end
|
end
|
||||||
function reconf.dnsredir_rm(dirtyList)
|
function reconf.dnsredir_rm(dirtyList)
|
||||||
local sname = u.getUciSectionName("dhcp", "dnsmasq")
|
local sname = u.getUciSectionName("dhcp", "dnsmasq")
|
||||||
if sname == nil then return u:logerror("dhcp config does not contain a dnsmasq section") end
|
if sname == nil then return l:error("dhcp config does not contain a dnsmasq section") end
|
||||||
|
|
||||||
uci:delete("dhcp", sname, "address")
|
uci:delete("dhcp", sname, "address")
|
||||||
commitBit(dirtyList, "dhcp"); reloadBit(dirtyList, "dnsmasq")
|
commitBit(dirtyList, "dhcp"); reloadBit(dirtyList, "dnsmasq")
|
||||||
@ -196,21 +197,21 @@ end
|
|||||||
--TODO: handle os.rename() return values (nil+msg on error)
|
--TODO: handle os.rename() return values (nil+msg on error)
|
||||||
function reconf.wwwcaptive_add(dirtyList)
|
function reconf.wwwcaptive_add(dirtyList)
|
||||||
if u.exists(M.WWW_CAPTIVE_INDICATOR) then
|
if u.exists(M.WWW_CAPTIVE_INDICATOR) then
|
||||||
return u:logdebug("WWW captive directory already in place, not redoing", false)
|
return l:debug("WWW captive directory already in place, not redoing", false)
|
||||||
end
|
end
|
||||||
local rv,reason = os.rename("/www", M.WWW_RENAME_NAME)
|
local rv,reason = os.rename("/www", M.WWW_RENAME_NAME)
|
||||||
if rv == true then
|
if rv == true then
|
||||||
u.symlink(M.WWW_CAPTIVE_PATH, "/www")
|
u.symlink(M.WWW_CAPTIVE_PATH, "/www")
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
return u:logerror("Could not rename /www to " .. M.WWW_RENAME_NAME .. "(" .. reason .. ")")
|
return l:error("Could not rename /www to " .. M.WWW_RENAME_NAME .. "(" .. reason .. ")")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function reconf.wwwcaptive_rm(dirtyList)
|
function reconf.wwwcaptive_rm(dirtyList)
|
||||||
if not u.exists(M.WWW_CAPTIVE_INDICATOR) then return u:logdebug("WWW captive directory not in place, not undoing", false) end
|
if not u.exists(M.WWW_CAPTIVE_INDICATOR) then return l:debug("WWW captive directory not in place, not undoing", false) end
|
||||||
os.remove("/www")
|
os.remove("/www")
|
||||||
if os.rename(M.WWW_RENAME_NAME, "/www") ~= true then
|
if os.rename(M.WWW_RENAME_NAME, "/www") ~= true then
|
||||||
return u:logerror("Could not rename " .. M.WWW_RENAME_NAME .. " to /www")
|
return l:error("Could not rename " .. M.WWW_RENAME_NAME .. " to /www")
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
local reconf = require("reconf")
|
local reconf = require("reconf")
|
||||||
local util = require("util")
|
local util = require("util")
|
||||||
|
local l = require("logger")
|
||||||
local uci = require("uci").cursor()
|
local uci = require("uci").cursor()
|
||||||
local iwinfo = require("iwinfo")
|
local iwinfo = require("iwinfo")
|
||||||
|
|
||||||
@ -145,7 +146,7 @@ function M.createConfigFromScanInfo(info, passphrase, disabled)
|
|||||||
|
|
||||||
uci:foreach("wireless", "wifi-iface", function(s)
|
uci:foreach("wireless", "wifi-iface", function(s)
|
||||||
if s.bssid == info.bssid then
|
if s.bssid == info.bssid then
|
||||||
util:logdebug("removing old wireless config for net '" .. s.ssid .. "(bssid: " .. s.bssid .. ")'")
|
l:debug("removing old wireless config for net '" .. s.ssid .. "(bssid: " .. s.bssid .. ")'")
|
||||||
uci:delete("wireless", s[".name"])
|
uci:delete("wireless", s[".name"])
|
||||||
-- return false --keep looking, just in case multiple entries with this bssid exist
|
-- return false --keep looking, just in case multiple entries with this bssid exist
|
||||||
end
|
end
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#chmod 755 /www/cgi-bin/wfcf
|
#chmod 755 /www/cgi-bin/wfcf
|
||||||
|
|
||||||
LUA=lua
|
LUA=lua
|
||||||
SCRIPT_PATH=/usr/share/lua/autowifi
|
SCRIPT_PATH=/usr/share/lua/wifibox
|
||||||
|
|
||||||
cd $SCRIPT_PATH
|
cd $SCRIPT_PATH
|
||||||
$LUA ./autowifi.lua $@
|
$LUA ./main.lua $@
|
44
src/util.lua
44
src/util.lua
@ -2,19 +2,6 @@ local uci = require("uci").cursor()
|
|||||||
|
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
function M.dump(o)
|
|
||||||
if type(o) == 'table' then
|
|
||||||
local s = '{ '
|
|
||||||
for k,v in pairs(o) do
|
|
||||||
if type(k) ~= 'number' then k = '"'..k..'"' end
|
|
||||||
s = s .. '['..k..'] = ' .. M.dump(v) .. ','
|
|
||||||
end
|
|
||||||
return s .. '} '
|
|
||||||
else
|
|
||||||
return tostring(o)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.printWithSuccess(msg)
|
function M.printWithSuccess(msg)
|
||||||
if msg ~= nil and msg ~= "" then print("OK," .. msg)
|
if msg ~= nil and msg ~= "" then print("OK," .. msg)
|
||||||
else print("OK") end
|
else print("OK") end
|
||||||
@ -47,40 +34,11 @@ function M.exists(file)
|
|||||||
return r ~= nil
|
return r ~= nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--FIXME: somehow protect this function from running arbitrary commands
|
||||||
function M.symlink(from, to)
|
function M.symlink(from, to)
|
||||||
if from == nil or from == "" or to == nil or to == "" then return -1 end
|
if from == nil or from == "" or to == nil or to == "" then return -1 end
|
||||||
local x = "ln -s " .. from .. " " .. to
|
local x = "ln -s " .. from .. " " .. to
|
||||||
return os.execute(x)
|
return os.execute(x)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- logging
|
|
||||||
M.LOG_LEVEL = {debug = 1, info = 2, warn = 3, error = 4, fatal = 5}
|
|
||||||
local logLevel, logVerbose, logStream
|
|
||||||
|
|
||||||
function M:initlog(level, verbose, stream)
|
|
||||||
logLevel = level or M.LOG_LEVEL.warn
|
|
||||||
logVerbose = verbose or false
|
|
||||||
logStream = stream or io.stdout
|
|
||||||
end
|
|
||||||
|
|
||||||
local function log(level, msg, verbose)
|
|
||||||
if level >= logLevel then
|
|
||||||
local now = os.date("%m-%d %H:%M:%S")
|
|
||||||
local i = debug.getinfo(3)
|
|
||||||
local v = verbose
|
|
||||||
if v == nil then v = logVerbose end
|
|
||||||
local name = i.name or "(nil)"
|
|
||||||
local vVal = "nil"
|
|
||||||
if v then logStream:write(now .. " (" .. level .. ") \t" .. msg .. " [" .. name .. "@" .. i.short_src .. ":" .. i.linedefined .. "]\n")
|
|
||||||
else logStream:write(now .. " (" .. level .. ") \t" .. msg .. "\n") end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function M:logdebug(msg, verbose) log(M.LOG_LEVEL.debug, msg, verbose); return true end
|
|
||||||
function M:loginfo(msg, verbose) log(M.LOG_LEVEL.info, msg, verbose); return true end
|
|
||||||
function M:logwarn(msg, verbose) log(M.LOG_LEVEL.warn, msg, verbose); return true end
|
|
||||||
function M:logerror(msg, verbose) log(M.LOG_LEVEL.error, msg, verbose); return false end
|
|
||||||
function M:logfatal(msg, verbose) log(M.LOG_LEVEL.fatal, msg, verbose); return false end
|
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
@ -1 +0,0 @@
|
|||||||
/usr/share/lua/autowifi/admin
|
|
@ -1 +0,0 @@
|
|||||||
/usr/share/lua/autowifi/ext/wfcf
|
|
Loading…
Reference in New Issue
Block a user