make use of the new features in the binding for uci v0.4.0 - fixes remaining dependen...
authorFelix Fietkau <nbd@openwrt.org>
Tue, 3 Jun 2008 22:42:01 +0000 (22:42 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 3 Jun 2008 22:42:01 +0000 (22:42 +0000)
applications/luci-statistics/luasrc/statistics/datatree.lua
applications/luci-statistics/luasrc/statistics/rrdtool.lua
applications/luci-statistics/root/usr/bin/stat-genconfig
libs/core/luasrc/model/uci.lua
libs/core/luasrc/model/uci/libuci.lua
modules/admin-core/luasrc/controller/admin/uci.lua
themes/fledermaus/luasrc/view/themes/fledermaus/header.htm
themes/openwrt.org/luasrc/view/themes/openwrt.org/header.htm

index e3c9e34bbc55e0e24152a8d72aba59639b83035c..ba6d7740b1b055ed6d599f2563120c5ef3fa9eae 100644 (file)
@@ -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()
index c2ac7a8e64590d64a4f3148239cce4e5fe6dbe29..5f07a41ff48484f4ed977990c6f90d54e04370f6 100644 (file)
@@ -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()
index 6241e9814565698a1ede8790c20d7f2b319999c8..c106ed39dc081bc2cd18d9b8caf134350a58ac55 100755 (executable)
@@ -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 )
index 39354bed190f7db243821ace526b0e48b7583360..1abf56686429bc48e14d41a3dc0aba9547f5c548 100644 (file)
@@ -89,4 +89,4 @@ end
 -- Wrapper for "uci set"
 function set(...)
        return default:set(...)
-end
\ No newline at end of file
+end
index 9a1112500e60dd0dc57d252b8cec4cb335156acc..601ff2f873190cea18d918faeee46b8811fa6a6b 100644 (file)
@@ -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
index 9c0e1beb5be7c5db8a5c1d128f7490f8a438d2ce..e9209da6ed9aa0ef68d9544ab076072c8dfea250 100644 (file)
@@ -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
index cb378555f1056b48c81241611bc6d197d62fbb60..2aea59cfdc260733f48dba4c3988418b03ca3d32 100644 (file)
@@ -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">
index 4efde4a62c85d3a8bb8b1401e3b0228916f8f6ad..71328e414150a349c9c0d85e78973ff90fb69fdc 100644 (file)
@@ -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">