summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-mod-admin-full/luasrc/controller
diff options
context:
space:
mode:
authorFlorian Eckert <fe@dev.tdt.de>2018-05-15 11:35:40 +0200
committerJo-Philipp Wich <jo@mein.io>2018-07-03 17:45:12 +0200
commit65ba4b8b8ae21fde49d0636bc1398940522322ff (patch)
tree393e8221a8a9d5178b668ff5bb296a4857cb4b8e /modules/luci-mod-admin-full/luasrc/controller
parentddbde3caaae267d400316d584e90991a579250d7 (diff)
luci-mod-admin-full: check backup.tar.gz on apply
If an uploaded backup.tar.gz is not valid we will not get a respond from LuCI. The system will perform a reboot without applying the "tar.gz" even though the backup import failed. To fix this check if the backup archive is valid with the command "gunzip -t <archive>" and if the validation fails render the flashops page with a hint. On the other hand apply the backup archive and perform a reboot as before. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
Diffstat (limited to 'modules/luci-mod-admin-full/luasrc/controller')
-rw-r--r--modules/luci-mod-admin-full/luasrc/controller/admin/system.lua14
1 files changed, 11 insertions, 3 deletions
diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua
index 0c19893cf8..153615b58a 100644
--- a/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua
+++ b/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua
@@ -341,9 +341,17 @@ function action_restore()
local upload = http.formvalue("archive")
if upload and #upload > 0 then
- luci.template.render("admin_system/applyreboot")
- os.execute("tar -C / -xzf %q >/dev/null 2>&1" % archive_tmp)
- luci.sys.reboot()
+ if os.execute("gunzip -t %q >/dev/null 2>&1" % archive_tmp) == 0 then
+ luci.template.render("admin_system/applyreboot")
+ os.execute("tar -C / -xzf %q >/dev/null 2>&1" % archive_tmp)
+ luci.sys.reboot()
+ else
+ luci.template.render("admin_system/flashops", {
+ reset_avail = supports_reset(),
+ upgrade_avail = supports_sysupgrade(),
+ backup_invalid = true
+ })
+ end
return
end