summaryrefslogtreecommitdiffhomepage
path: root/modules/admin-full/luasrc/model/cbi/admin_system/backupfiles.lua
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2011-10-24 01:10:34 +0000
committerJo-Philipp Wich <jow@openwrt.org>2011-10-24 01:10:34 +0000
commit6245ad6a73090ac3668e8f4b9749614592294a08 (patch)
tree8f08e3253f1e8c9b85908a8e94b513bff55b7841 /modules/admin-full/luasrc/model/cbi/admin_system/backupfiles.lua
parenteb6e37ebb7b9d576e9eb9f1a0d140936d11ddf11 (diff)
modules/admin-full: rework system menu area
Diffstat (limited to 'modules/admin-full/luasrc/model/cbi/admin_system/backupfiles.lua')
-rw-r--r--modules/admin-full/luasrc/model/cbi/admin_system/backupfiles.lua92
1 files changed, 92 insertions, 0 deletions
diff --git a/modules/admin-full/luasrc/model/cbi/admin_system/backupfiles.lua b/modules/admin-full/luasrc/model/cbi/admin_system/backupfiles.lua
new file mode 100644
index 000000000..22258a937
--- /dev/null
+++ b/modules/admin-full/luasrc/model/cbi/admin_system/backupfiles.lua
@@ -0,0 +1,92 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2008 Steven Barth <steven@midlink.org>
+Copyright 2011 Jo-Philipp Wich <xm@subsignal.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$
+]]--
+
+
+if luci.http.formvalue("cbid.luci.1._list") then
+ luci.http.redirect(luci.dispatcher.build_url("admin/system/flashops/backupfiles") .. "?display=list")
+elseif luci.http.formvalue("cbid.luci.1._edit") then
+ luci.http.redirect(luci.dispatcher.build_url("admin/system/flashops/backupfiles") .. "?display=edit")
+ return
+end
+
+m = SimpleForm("luci", "%s - %s - %s" %{ translate("System"), translate("Flash operations"), translate("Backup file list") })
+m:append(Template("admin_system/backupfiles"))
+
+if luci.http.formvalue("display") ~= "list" then
+ f = m:section(SimpleSection, nil, translate("This is a list of shell glob patterns for matching files and directories to include during sysupgrade. Modified files in /etc/config/ and certain other configurations are automatically preserved."))
+
+ l = f:option(Button, "_list", translate("Show current backup file list"))
+ l.inputtitle = translate("Open list...")
+ l.inputstyle = "apply"
+
+ c = f:option(TextValue, "_custom")
+ c.rmempty = false
+ c.cols = 70
+ c.rows = 30
+
+ c.cfgvalue = function(self, section)
+ return nixio.fs.readfile("/etc/sysupgrade.conf")
+ end
+
+ c.write = function(self, section, value)
+ value = value:gsub("\r\n?", "\n")
+ return nixio.fs.writefile("/etc/sysupgrade.conf", value)
+ end
+else
+ m.submit = false
+ m.reset = false
+
+ f = m:section(SimpleSection, nil, translate("Below is the determined list of files to backup. It consists of changed configuration files marked by opkg, essential base files and the user defined backup patterns."))
+
+ l = f:option(Button, "_edit", translate("Back to configuration"))
+ l.inputtitle = translate("Close list...")
+ l.inputstyle = "link"
+
+
+ d = f:option(DummyValue, "_detected")
+ d.rawhtml = true
+ d.cfgvalue = function(s)
+ local list = io.popen(
+ "( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' /etc/sysupgrade.conf " ..
+ "/lib/upgrade/keep.d/* 2>/dev/null) -type f 2>/dev/null; " ..
+ "opkg list-changed-conffiles ) | sort -u"
+ )
+
+ if list then
+ local files = { "<ul>" }
+
+ while true do
+ local ln = list:read("*l")
+ if not ln then
+ break
+ else
+ files[#files+1] = "<li>"
+ files[#files+1] = luci.util.pcdata(ln)
+ files[#files+1] = "</li>"
+ end
+ end
+
+ list:close()
+ files[#files+1] = "</ul>"
+
+ return table.concat(files, "")
+ end
+
+ return "<em>" .. translate("No files found") .. "</em>"
+ end
+
+end
+
+return m