summaryrefslogtreecommitdiffhomepage
path: root/modules/admin-full/luasrc/controller/admin/uci.lua
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2008-07-15 08:47:36 +0000
committerSteven Barth <steven@midlink.org>2008-07-15 08:47:36 +0000
commit97ff4a156ff1aa6a4d2ab65ab13d12b4eb2651e2 (patch)
tree7b95d899c2cfc0bb95fc2ee149dec3ea3b4e0742 /modules/admin-full/luasrc/controller/admin/uci.lua
parent4d7c453ea83c749b05d6271a3bdc0c0c057150ed (diff)
Split up admin-core into admin-core and admin-full, preparing admin-mini
Diffstat (limited to 'modules/admin-full/luasrc/controller/admin/uci.lua')
-rw-r--r--modules/admin-full/luasrc/controller/admin/uci.lua99
1 files changed, 99 insertions, 0 deletions
diff --git a/modules/admin-full/luasrc/controller/admin/uci.lua b/modules/admin-full/luasrc/controller/admin/uci.lua
new file mode 100644
index 0000000000..215a13a34b
--- /dev/null
+++ b/modules/admin-full/luasrc/controller/admin/uci.lua
@@ -0,0 +1,99 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2008 Steven Barth <steven@midlink.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+$Id$
+]]--
+module("luci.controller.admin.uci", package.seeall)
+
+function index()
+ local i18n = luci.i18n.translate
+
+ entry({"admin", "uci"}, nil, i18n("config"))
+ entry({"admin", "uci", "changes"}, call("action_changes"), i18n("changes"))
+ entry({"admin", "uci", "revert"}, call("action_revert"), i18n("revert"))
+ entry({"admin", "uci", "apply"}, call("action_apply"), i18n("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 = r.."."..s
+ if o ~= ".type" then
+ str = str.."."..o
+ end
+ table.insert(ret, str..val)
+ end
+ end
+ end
+ return table.concat(ret, "\n")
+end
+
+function action_changes()
+ local changes = convert_changes(luci.model.uci.changes())
+ luci.template.render("admin_uci/changes", {changes=changes})
+end
+
+function action_apply()
+ local changes = luci.model.uci.changes()
+ local output = ""
+
+ if changes then
+ local com = {}
+ local run = {}
+
+ -- Collect files to be applied and commit changes
+ for r, tbl in pairs(changes) do
+ if r then
+ luci.model.uci.load(r)
+ luci.model.uci.commit(r)
+ luci.model.uci.unload(r)
+ if luci.config.uci_oncommit and luci.config.uci_oncommit[r] then
+ run[luci.config.uci_oncommit[r]] = true
+ end
+ end
+ end
+
+ -- Search for post-commit commands
+ for cmd, i in pairs(run) do
+ output = output .. cmd .. ":" .. luci.sys.exec(cmd) .. "\n"
+ end
+ end
+
+
+ luci.template.render("admin_uci/apply", {changes=convert_changes(changes), output=output})
+end
+
+
+function action_revert()
+ local changes = luci.model.uci.changes()
+ if changes then
+ local revert = {}
+
+ -- Collect files to be reverted
+ for r, tbl in pairs(changes) do
+ luci.model.uci.load(r)
+ luci.model.uci.revert(r)
+ luci.model.uci.unload(r)
+ end
+ end
+
+ luci.template.render("admin_uci/revert", {changes=convert_changes(changes)})
+end