diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2011-10-24 01:10:34 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2011-10-24 01:10:34 +0000 |
commit | 6245ad6a73090ac3668e8f4b9749614592294a08 (patch) | |
tree | 8f08e3253f1e8c9b85908a8e94b513bff55b7841 /modules/admin-full/luasrc/model/cbi/admin_system/backupfiles.lua | |
parent | eb6e37ebb7b9d576e9eb9f1a0d140936d11ddf11 (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.lua | 92 |
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 |