summaryrefslogtreecommitdiffhomepage
path: root/libs
diff options
context:
space:
mode:
Diffstat (limited to 'libs')
-rw-r--r--libs/cbi/luasrc/cbi.lua75
-rw-r--r--libs/uci/luasrc/model/uci.lua8
-rw-r--r--libs/web/luasrc/config.lua24
-rw-r--r--libs/web/luasrc/dispatcher.lua1
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