summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-mod-admin-full/luasrc/model
diff options
context:
space:
mode:
authorDaniel Dickinson <openwrt@daniel.thecshore.com>2015-12-02 00:17:52 -0500
committerDaniel Dickinson <openwrt@daniel.thecshore.com>2015-12-02 02:16:13 -0500
commitb8c2d340f3bde4b3c1a5a7e3635ac0109d4ecddd (patch)
treea88127acbffc67e8c67c1466316144e101c2357e /modules/luci-mod-admin-full/luasrc/model
parent9c9118566cb885a9a4298717a5a24eb92bfc8310 (diff)
luci-mod-admin-full: fstab: Add ability to unmount non-system mounts
Add an unmount button for non-system mounts which will unmount the corresponding file system.
Diffstat (limited to 'modules/luci-mod-admin-full/luasrc/model')
-rw-r--r--modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua40
1 files changed, 39 insertions, 1 deletions
diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua
index d4e834daff..4edc811939 100644
--- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua
+++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua
@@ -37,8 +37,32 @@ block:close()
m = Map("fstab", translate("Mount Points"))
local mounts = luci.sys.mounts()
+local non_system_mounts = {}
+for rawmount, val in pairs(mounts) do
+ repeat
+ val.umount = false
+ if (val.mountpoint == "/") then
+ break
+ elseif (val.mountpoint == "/overlay") then
+ break
+ elseif (val.mountpoint == "/rom") then
+ break
+ elseif (val.mountpoint == "/tmp") then
+ break
+ elseif (val.mountpoint == "/tmp/shm") then
+ break
+ elseif (val.mountpoint == "/tmp/upgrade") then
+ break
+ elseif (val.mountpoint == "/dev") then
+ break
+ end
+ val.umount = true
+ until true
+ non_system_mounts[rawmount] = val
+ end
+end
-v = m:section(Table, mounts, translate("Mounted file systems"))
+v = m:section(Table, non_system_mounts, translate("Mounted file systems"))
fs = v:option(DummyValue, "fs", translate("Filesystem"))
@@ -61,7 +85,21 @@ function used.cfgvalue(self, section)
) .. ")"
end
+unmount = v:option(Button, "unmount", translate("Unmount"))
+unmount.render = function(self, section, scope)
+ if non_system_mounts[section].umount then
+ self.title = translate("Unmount")
+ self.inputstyle = "remove"
+ Button.render(self, section, scope)
+ end
+end
+unmount.write = function(self, section)
+ if non_system_mounts[section].umount then
+ luci.sys.call("/bin/umount '%s'" % luci.util.shellstartsqescape(non_system_mounts[section].mountpoint))
+ return luci.http.redirect(luci.dispatcher.build_url("admin/system", "fstab"))
+ end
+end
mount = m:section(TypedSection, "mount", translate("Mount Points"), translate("Mount Points define at which point a memory device will be attached to the filesystem"))
mount.anonymous = true