summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2008-06-03 22:42:01 +0000
committerFelix Fietkau <nbd@openwrt.org>2008-06-03 22:42:01 +0000
commit77f8074a01277917ab9ab0d00778f59bb0a88817 (patch)
tree0a74c83baa97175d553a900ff1378b68fced149d
parent3bcf6dbea363d7267d95bb0199d91603a33362b7 (diff)
make use of the new features in the binding for uci v0.4.0 - fixes remaining dependencies of libuci.lua on the cli
-rw-r--r--applications/luci-statistics/luasrc/statistics/datatree.lua2
-rw-r--r--applications/luci-statistics/luasrc/statistics/rrdtool.lua2
-rwxr-xr-xapplications/luci-statistics/root/usr/bin/stat-genconfig2
-rw-r--r--libs/core/luasrc/model/uci.lua2
-rw-r--r--libs/core/luasrc/model/uci/libuci.lua91
-rw-r--r--modules/admin-core/luasrc/controller/admin/uci.lua36
-rw-r--r--themes/fledermaus/luasrc/view/themes/fledermaus/header.htm10
-rw-r--r--themes/openwrt.org/luasrc/view/themes/openwrt.org/header.htm10
8 files changed, 58 insertions, 97 deletions
diff --git a/applications/luci-statistics/luasrc/statistics/datatree.lua b/applications/luci-statistics/luasrc/statistics/datatree.lua
index e3c9e34bb..ba6d7740b 100644
--- a/applications/luci-statistics/luasrc/statistics/datatree.lua
+++ b/applications/luci-statistics/luasrc/statistics/datatree.lua
@@ -4,7 +4,7 @@ local util = require("luci.util")
local sys = require("luci.sys")
local fs = require("luci.fs")
local uci = require("luci.model.uci").Session()
-local sections, names = uci:sections( "luci_statistics" )
+local sections = uci:sections( "luci_statistics" )
Instance = util.class()
diff --git a/applications/luci-statistics/luasrc/statistics/rrdtool.lua b/applications/luci-statistics/luasrc/statistics/rrdtool.lua
index c2ac7a8e6..5f07a41ff 100644
--- a/applications/luci-statistics/luasrc/statistics/rrdtool.lua
+++ b/applications/luci-statistics/luasrc/statistics/rrdtool.lua
@@ -17,7 +17,7 @@ function Graph.__init__( self, timespan, opts )
opts = opts or { }
local uci = luci.model.uci.Session()
- local sections, names = uci:sections( "luci_statistics" )
+ local sections = uci:sections( "luci_statistics" )
-- helper classes
self.colors = luci.statistics.rrdtool.colors.Instance()
diff --git a/applications/luci-statistics/root/usr/bin/stat-genconfig b/applications/luci-statistics/root/usr/bin/stat-genconfig
index 6241e9814..c106ed39d 100755
--- a/applications/luci-statistics/root/usr/bin/stat-genconfig
+++ b/applications/luci-statistics/root/usr/bin/stat-genconfig
@@ -22,7 +22,7 @@ require("luci.util")
local ipt = luci.sys.iptparser.IptParser()
local uci = luci.model.uci.Session()
-local sections, names = uci:sections( "luci_statistics" )
+local sections = uci:sections( "luci_statistics" )
function section( plugin )
diff --git a/libs/core/luasrc/model/uci.lua b/libs/core/luasrc/model/uci.lua
index 39354bed1..1abf56686 100644
--- a/libs/core/luasrc/model/uci.lua
+++ b/libs/core/luasrc/model/uci.lua
@@ -89,4 +89,4 @@ end
-- Wrapper for "uci set"
function set(...)
return default:set(...)
-end \ No newline at end of file
+end
diff --git a/libs/core/luasrc/model/uci/libuci.lua b/libs/core/luasrc/model/uci/libuci.lua
index 9a1112500..601ff2f87 100644
--- a/libs/core/luasrc/model/uci/libuci.lua
+++ b/libs/core/luasrc/model/uci/libuci.lua
@@ -35,44 +35,43 @@ Session = luci.util.class()
-- Session constructor
function Session.__init__(self, savedir)
- self.ucicmd = savedir and "uci -P " .. savedir or "uci"
self.savedir = savedir or luci.model.uci.savedir
+ uci.set_savedir(self.savedir)
end
function Session.add(self, config, section_type)
- return self:_uci("add " .. _path(config) .. " " .. _path(section_type))
+ return uci.add(config, section_type)
end
function Session.changes(self, config)
- return self:_uci("changes " .. _path(config))
+ if config then
+ return uci.changes(config)
+ else
+ return uci.changes()
+ end
end
function Session.commit(self, config)
- self:t_load(config)
return self:t_commit(config)
end
function Session.del(self, config, section, option)
- return self:_uci2("del " .. _path(config, section, option))
+ return uci.del(config, section, option)
end
function Session.get(self, config, section, option)
- self:t_load(config)
return self:t_get(config, section, option)
end
function Session.revert(self, config)
- self:t_load(config)
return self:t_revert(config)
end
function Session.sections(self, config)
- self:t_load(config)
return self:t_sections(config)
end
function Session.set(self, config, section, option, value)
- self:t_load(config)
return self:t_set(config, section, option, value) and self:t_save(config)
end
@@ -92,10 +91,7 @@ function Session.t_save(self, config)
end
function Session.t_add(self, config, type)
- self:t_save(config)
- local r = self:add(config, type)
- self:t_load(config)
- return r
+ return self:add(config, type)
end
function Session.t_commit(self, config)
@@ -103,10 +99,7 @@ function Session.t_commit(self, config)
end
function Session.t_del(self, config, section, option)
- self:t_save(config)
- local r = self:del(config, section, option)
- self:t_load(config)
- return r
+ return self:del(config, section, option)
end
function Session.t_get(self, config, section, option)
@@ -122,72 +115,14 @@ function Session.t_revert(self, config)
end
function Session.t_sections(self, config)
- local raw = uci.get_all(config)
- if not raw then
- return nil
- end
-
- local s = {}
- local o = {}
-
- for i, sec in ipairs(raw) do
- table.insert(o, sec.name)
-
- s[sec.name] = sec.options
- s[sec.name][".type"] = sec.type
- end
-
- return s, o
+ return uci.get_all(config)
end
function Session.t_set(self, config, section, option, value)
if option then
- return uci.set(config.."."..section.."."..option.."="..value)
+ return uci.set(config, section, option, value)
else
- return uci.set(config.."."..section.."="..value)
+ return uci.set(config, section, value)
end
end
--- Internal functions --
-
-
-function Session._uci(self, cmd)
- local res = luci.sys.exec(self.ucicmd .. " 2>/dev/null " .. cmd)
-
- if res:len() == 0 then
- return nil
- else
- return res:sub(1, res:len()-1)
- end
-end
-
-function Session._uci2(self, cmd)
- local res = luci.sys.exec(self.ucicmd .. " 2>&1 " .. cmd)
-
- if res:len() > 0 then
- return false, res
- else
- return true
- end
-end
-
--- Build path (config.section.option=value) and prevent command injection
-function _path(...)
- local result = ""
-
- -- Not using ipairs because it is not reliable in case of nil arguments
- arg.n = nil
- for k,v in pairs(arg) do
- if v then
- v = tostring(v)
- if k == 1 then
- result = "'" .. v:gsub("['.]", "") .. "'"
- elseif k < 4 then
- result = result .. ".'" .. v:gsub("['.]", "") .. "'"
- elseif k == 4 then
- result = result .. "='" .. v:gsub("'", "") .. "'"
- end
- end
- end
- return result
-end \ No newline at end of file
diff --git a/modules/admin-core/luasrc/controller/admin/uci.lua b/modules/admin-core/luasrc/controller/admin/uci.lua
index 9c0e1beb5..e9209da6e 100644
--- a/modules/admin-core/luasrc/controller/admin/uci.lua
+++ b/modules/admin-core/luasrc/controller/admin/uci.lua
@@ -8,6 +8,29 @@ function index()
node("admin", "uci", "apply").target = call("action_apply")
end
+function convert_changes(changes)
+ local ret = {}
+ for r, tbl in pairs(changes) do
+ for s, os in pairs(tbl) do
+ for o, v in pairs(os) do
+ local val, str
+ if (v == "") then
+ str = "-"
+ val = ""
+ else
+ str = ""
+ val = "="..v
+ end
+ str = str.."."..r
+ if o ~= ".type" then
+ str = str.."."..o
+ end
+ table.insert(ret, str..val)
+ end
+ end
+ end
+end
+
-- This function has a higher priority than the admin_uci/apply template
function action_apply()
local changes = luci.model.uci.changes()
@@ -18,8 +41,7 @@ function action_apply()
local run = {}
-- Collect files to be applied and commit changes
- for i, line in ipairs(luci.util.split(changes)) do
- local r = line:match("^-?([^.]+)")
+ for r, tbl in pairs(changes) do
if r then
com[r] = true
@@ -40,7 +62,8 @@ function action_apply()
end
end
- luci.template.render("admin_uci/apply", {changes=changes, output=output})
+
+ luci.template.render("admin_uci/apply", {changes=convert_changes(changes), output=output})
end
@@ -50,8 +73,7 @@ function action_revert()
local revert = {}
-- Collect files to be reverted
- for i, line in ipairs(luci.util.split(changes)) do
- local r = line:match("^-?([^.]+)")
+ for r, tbl in ipairs(changes) do
if r then
revert[r] = true
end
@@ -63,5 +85,5 @@ function action_revert()
end
end
- luci.template.render("admin_uci/revert", {changes=changes})
-end \ No newline at end of file
+ luci.template.render("admin_uci/revert", {changes=convert_changes(changes)})
+end
diff --git a/themes/fledermaus/luasrc/view/themes/fledermaus/header.htm b/themes/fledermaus/luasrc/view/themes/fledermaus/header.htm
index cb378555f..2aea59cfd 100644
--- a/themes/fledermaus/luasrc/view/themes/fledermaus/header.htm
+++ b/themes/fledermaus/luasrc/view/themes/fledermaus/header.htm
@@ -120,9 +120,11 @@ end
<%
if "admin" == request[1] then
require("luci.model.uci")
- local ucic = luci.model.uci.changes()
- if ucic then
- ucic = #luci.util.split(ucic)
+ local ucic = 0
+ for n, s in pairs(luci.model.uci.changes()) do
+ for no, o in pairs(s) do
+ ucic = ucic + 1;
+ end
end
%>
<div><%:config Konfiguration%>
@@ -138,4 +140,4 @@ end
</div>
<% end %>
</div>
- <div id="content"> \ No newline at end of file
+ <div id="content">
diff --git a/themes/openwrt.org/luasrc/view/themes/openwrt.org/header.htm b/themes/openwrt.org/luasrc/view/themes/openwrt.org/header.htm
index 4efde4a62..71328e414 100644
--- a/themes/openwrt.org/luasrc/view/themes/openwrt.org/header.htm
+++ b/themes/openwrt.org/luasrc/view/themes/openwrt.org/header.htm
@@ -120,9 +120,11 @@ end
<%
if "admin" == request[1] then
require("luci.model.uci")
- local ucic = luci.model.uci.changes()
- if ucic then
- ucic = #luci.util.split(ucic)
+ local ucic = 0
+ for n, s in pairs(luci.model.uci.changes()) do
+ for no, o in pairs(s) do
+ ucic = ucic + 1;
+ end
end
%>
<div><%:config Konfiguration%>
@@ -138,4 +140,4 @@ end
</div>
<% end %>
</div>
- <div id="content"> \ No newline at end of file
+ <div id="content">