2015-01-16 22:38:38 +00:00
-- Copyright 2008 Steven Barth <steven@midlink.org>
-- Licensed to the public under the Apache License 2.0.
2010-11-27 04:55:38 +00:00
2008-08-14 23:10:41 +00:00
require ( " luci.tools.webadmin " )
2008-09-04 22:03:19 +00:00
2009-07-19 00:24:58 +00:00
local fs = require " nixio.fs "
local util = require " nixio.util "
2008-09-04 22:03:19 +00:00
local devices = { }
2009-07-19 00:24:58 +00:00
util.consume ( ( fs.glob ( " /dev/sd* " ) ) , devices )
util.consume ( ( fs.glob ( " /dev/hd* " ) ) , devices )
util.consume ( ( fs.glob ( " /dev/scd* " ) ) , devices )
util.consume ( ( fs.glob ( " /dev/mmc* " ) ) , devices )
2008-09-04 22:03:19 +00:00
local size = { }
for i , dev in ipairs ( devices ) do
2009-07-19 00:24:58 +00:00
local s = tonumber ( ( fs.readfile ( " /sys/class/block/%s/size " % dev : sub ( 6 ) ) ) )
2008-09-04 22:03:19 +00:00
size [ dev ] = s and math.floor ( s / 2048 )
end
2009-10-31 15:54:11 +00:00
m = Map ( " fstab " , translate ( " Mount Points " ) )
2008-04-11 19:03:30 +00:00
2008-08-14 23:10:41 +00:00
local mounts = luci.sys . mounts ( )
2009-10-31 15:54:11 +00:00
v = m : section ( Table , mounts , translate ( " Mounted file systems " ) )
2008-08-14 23:10:41 +00:00
2009-10-31 15:54:11 +00:00
fs = v : option ( DummyValue , " fs " , translate ( " Filesystem " ) )
2008-08-14 23:10:41 +00:00
2009-10-31 15:54:11 +00:00
mp = v : option ( DummyValue , " mountpoint " , translate ( " Mount Point " ) )
2008-08-14 23:10:41 +00:00
2009-10-31 15:54:11 +00:00
avail = v : option ( DummyValue , " avail " , translate ( " Available " ) )
2008-08-14 23:10:41 +00:00
function avail . cfgvalue ( self , section )
return luci.tools . webadmin.byte_format (
2008-09-16 01:36:38 +00:00
( tonumber ( mounts [ section ] . available ) or 0 ) * 1024
2008-08-14 23:10:41 +00:00
) .. " / " .. luci.tools . webadmin.byte_format (
2008-09-16 01:36:38 +00:00
( tonumber ( mounts [ section ] . blocks ) or 0 ) * 1024
2008-08-14 23:10:41 +00:00
)
end
2009-10-31 15:54:11 +00:00
used = v : option ( DummyValue , " used " , translate ( " Used " ) )
2008-08-14 23:10:41 +00:00
function used . cfgvalue ( self , section )
2008-09-16 02:00:16 +00:00
return ( mounts [ section ] . percent or " 0% " ) .. " ( " ..
2008-08-14 23:10:41 +00:00
luci.tools . webadmin.byte_format (
2008-09-16 01:36:38 +00:00
( tonumber ( mounts [ section ] . used ) or 0 ) * 1024
2008-08-14 23:10:41 +00:00
) .. " ) "
end
2009-10-31 15:54:11 +00:00
mount = m : section ( TypedSection , " mount " , translate ( " Mount Points " ) , translate ( " Mount Points define at which point a memory device will be attached to the filesystem " ) )
2008-04-11 19:03:30 +00:00
mount.anonymous = true
mount.addremove = true
2008-08-13 23:19:48 +00:00
mount.template = " cbi/tblsection "
2010-11-27 04:55:38 +00:00
mount.extedit = luci.dispatcher . build_url ( " admin/system/fstab/mount/%s " )
mount.create = function ( ... )
local sid = TypedSection.create ( ... )
if sid then
luci.http . redirect ( mount.extedit % sid )
return
end
end
mount : option ( Flag , " enabled " , translate ( " Enabled " ) ) . rmempty = false
dev = mount : option ( DummyValue , " device " , translate ( " Device " ) )
dev.cfgvalue = function ( self , section )
local v
v = m.uci : get ( " fstab " , section , " uuid " )
if v then return " UUID: %s " % v end
v = m.uci : get ( " fstab " , section , " label " )
if v then return " Label: %s " % v end
v = Value.cfgvalue ( self , section ) or " ? "
return size [ v ] and " %s (%s MB) " % { v , size [ v ] } or v
end
mp = mount : option ( DummyValue , " target " , translate ( " Mount Point " ) )
mp.cfgvalue = function ( self , section )
if m.uci : get ( " fstab " , section , " is_rootfs " ) == " 1 " then
return " /overlay "
else
return Value.cfgvalue ( self , section ) or " ? "
end
end
2008-04-11 19:03:30 +00:00
2010-11-27 04:55:38 +00:00
fs = mount : option ( DummyValue , " fstype " , translate ( " Filesystem " ) )
fs.cfgvalue = function ( self , section )
return Value.cfgvalue ( self , section ) or " ? "
2008-09-04 22:03:19 +00:00
end
2010-11-27 04:55:38 +00:00
op = mount : option ( DummyValue , " options " , translate ( " Options " ) )
op.cfgvalue = function ( self , section )
return Value.cfgvalue ( self , section ) or " defaults "
end
rf = mount : option ( DummyValue , " is_rootfs " , translate ( " Root " ) )
rf.cfgvalue = function ( self , section )
return Value.cfgvalue ( self , section ) == " 1 "
and translate ( " yes " ) or translate ( " no " )
end
ck = mount : option ( DummyValue , " enabled_fsck " , translate ( " Check " ) )
ck.cfgvalue = function ( self , section )
return Value.cfgvalue ( self , section ) == " 1 "
and translate ( " yes " ) or translate ( " no " )
end
2008-04-11 19:03:30 +00:00
2009-10-31 15:54:11 +00:00
swap = m : section ( TypedSection , " swap " , " SWAP " , translate ( " If your physical memory is insufficient unused data can be temporarily swapped to a swap-device resulting in a higher amount of usable <abbr title= \" Random Access Memory \" >RAM</abbr>. Be aware that swapping data is a very slow process as the swap-device cannot be accessed with the high datarates of the <abbr title= \" Random Access Memory \" >RAM</abbr>. " ) )
2008-04-11 19:03:30 +00:00
swap.anonymous = true
swap.addremove = true
2008-08-13 23:19:48 +00:00
swap.template = " cbi/tblsection "
2010-11-27 04:55:38 +00:00
swap.extedit = luci.dispatcher . build_url ( " admin/system/fstab/swap/%s " )
swap.create = function ( ... )
local sid = TypedSection.create ( ... )
if sid then
luci.http . redirect ( swap.extedit % sid )
return
end
end
swap : option ( Flag , " enabled " , translate ( " Enabled " ) ) . rmempty = false
dev = swap : option ( DummyValue , " device " , translate ( " Device " ) )
dev.cfgvalue = function ( self , section )
local v
v = m.uci : get ( " fstab " , section , " uuid " )
if v then return " UUID: %s " % v end
v = m.uci : get ( " fstab " , section , " label " )
if v then return " Label: %s " % v end
2008-04-11 19:03:30 +00:00
2010-11-27 04:55:38 +00:00
v = Value.cfgvalue ( self , section ) or " ? "
return size [ v ] and " %s (%s MB) " % { v , size [ v ] } or v
2008-09-04 22:03:19 +00:00
end
2008-04-11 19:03:30 +00:00
return m