diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/cbi/luasrc/cbi.lua | 75 | ||||
-rw-r--r-- | libs/uci/luasrc/model/uci.lua | 8 | ||||
-rw-r--r-- | libs/web/luasrc/config.lua | 24 | ||||
-rw-r--r-- | libs/web/luasrc/dispatcher.lua | 1 |
4 files changed, 35 insertions, 73 deletions
diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua index 178c46f03c..d6a5cca056 100644 --- a/libs/cbi/luasrc/cbi.lua +++ b/libs/cbi/luasrc/cbi.lua @@ -31,9 +31,11 @@ require("luci.util") require("luci.http") require("luci.model.uci") +local uci = luci.model.uci local class = luci.util.class local instanceof = luci.util.instanceof + -- Loads a CBI map from given file, creating an environment and returns it function load(cbimap) require("luci.fs") @@ -141,18 +143,16 @@ function Map.__init__(self, config, ...) self.config = config self.template = "cbi/map" - self.uci = luci.model.uci.Session() - self.ucidata, self.uciorder = self.uci:sections(self.config) - if not self.ucidata or not self.uciorder then + if not uci.load(self.config) then error("Unable to read UCI data: " .. self.config) end end -- Use optimized UCI writing function Map.parse(self, ...) - self.uci:t_load(self.config) Node.parse(self, ...) - self.uci:t_save(self.config) + uci.save(self.config) + uci.unload(self.config) end -- Creates a child section @@ -168,59 +168,31 @@ end -- UCI add function Map.add(self, sectiontype) - local name = self.uci:t_add(self.config, sectiontype) - if name then - self.ucidata[name] = {} - self.ucidata[name][".type"] = sectiontype - table.insert(self.uciorder, name) - end - return name + return uci.add(self.config, sectiontype) end -- UCI set function Map.set(self, section, option, value) - local stat = self.uci:t_set(self.config, section, option, value) - if stat then - local val = self.uci:t_get(self.config, section, option) - if option then - self.ucidata[section][option] = val - else - if not self.ucidata[section] then - self.ucidata[section] = {} - end - self.ucidata[section][".type"] = val - table.insert(self.uciorder, section) - end - end - return stat + return uci.set(self.config, section, option or value, option and value) end -- UCI del function Map.del(self, section, option) - local stat = self.uci:t_del(self.config, section, option) - if stat then - if option then - self.ucidata[section][option] = nil - else - self.ucidata[section] = nil - for i, k in ipairs(self.uciorder) do - if section == k then - table.remove(self.uciorder, i) - end - end - end + if option then + return uci.delete(self.config, section, option) + else + return uci.delete(self.config, section) end - return stat end --- UCI get (cached) +-- UCI get function Map.get(self, section, option) if not section then - return self.ucidata, self.uciorder - elseif option and self.ucidata[section] then - return self.ucidata[section][option] + return uci.get_all(self.config) + elseif option then + return uci.get(self.config, section, option) else - return self.ucidata[section] + return uci.get_all(self.config, section) end end @@ -396,15 +368,12 @@ end -- Return all matching UCI sections for this TypedSection function TypedSection.cfgsections(self) local sections = {} - local map, order = self.map:get() - - for i, k in ipairs(order) do - if map[k][".type"] == self.sectiontype then - if self:checkscope(k) then - table.insert(sections, k) - end - end - end + uci.foreach(self.map.config, self.sectiontype, + function (section) + if self:checkscope(section[".name"]) then + table.insert(sections, section[".name"]) + end + end) return sections end diff --git a/libs/uci/luasrc/model/uci.lua b/libs/uci/luasrc/model/uci.lua index 060e074c4b..59a9a2c27f 100644 --- a/libs/uci/luasrc/model/uci.lua +++ b/libs/uci/luasrc/model/uci.lua @@ -37,6 +37,11 @@ local configs_mt = {} local sections_mt = {} local options_mt = {} +savedir_default = "/tmp/.uci" +confdir_default = "/etc/config" + +savedir_state = "/var/state" + config = {} setmetatable(config, configs_mt) @@ -44,6 +49,9 @@ setmetatable(config, configs_mt) function configs_mt.__index(self, key) local node = rawget(self, key) if not node then + if not uci.load(key) then + return nil + end node = {} node[".name"] = key setmetatable(node, sections_mt) diff --git a/libs/web/luasrc/config.lua b/libs/web/luasrc/config.lua index 4eb8e46e4f..557303f88d 100644 --- a/libs/web/luasrc/config.lua +++ b/libs/web/luasrc/config.lua @@ -25,23 +25,7 @@ limitations under the License. ]]-- -local uci = require("luci.model.uci") -local util = require("luci.util") -module("luci.config") - --- Warning! This is only for fallback and compatibility purporses! -- -main = {} - --- This is where stylesheets and images go -main.mediaurlbase = "/luci/media" - --- Does anybody think about browser autodetect here? --- Too bad busybox doesn't populate HTTP_ACCEPT_LANGUAGE -main.lang = "de" - - --- Now overwrite with UCI values -local ucidata = uci.sections("luci") -if ucidata then - util.update(_M, ucidata) -end
\ No newline at end of file +module("luci.config", + function(m) + setmetatable(m, {__index = require("luci.model.uci").get_all("luci")}) + end)
\ No newline at end of file diff --git a/libs/web/luasrc/dispatcher.lua b/libs/web/luasrc/dispatcher.lua index ef6c6881b4..7ff4031a62 100644 --- a/libs/web/luasrc/dispatcher.lua +++ b/libs/web/luasrc/dispatcher.lua @@ -162,6 +162,7 @@ function dispatch() tpl.viewns.uploadctrl = luci.http.dispatcher_upload() tpl.viewns.media = luci.config.main.mediaurlbase tpl.viewns.resource = luci.config.main.resourcebase + tpl.viewns.uci = require("luci.model.uci").config tpl.viewns.REQUEST_URI = luci.http.env.SCRIPT_NAME .. luci.http.env.PATH_INFO |