diff --git a/app/controllers/admin/system_info_controller.rb b/app/controllers/admin/system_info_controller.rb index cc63009cdc0f8e45f7c867d50d8956c0d2a18e2e..e4c730088269169b3b5b3953d77e1e540b6776f7 100644 --- a/app/controllers/admin/system_info_controller.rb +++ b/app/controllers/admin/system_info_controller.rb @@ -1,27 +1,54 @@ class Admin::SystemInfoController < Admin::ApplicationController - def show - excluded_mounts = [ - "nobrowse", - "read-only", - "ro" - ] + EXCLUDED_MOUNT_OPTIONS = [ + 'nobrowse', + 'read-only', + 'ro' + ] + + EXCLUDED_MOUNT_TYPES = [ + 'autofs', + 'binfmt_misc', + 'cgroup', + 'debugfs', + 'devfs', + 'devpts', + 'devtmpfs', + 'efivarfs', + 'fuse.gvfsd-fuse', + 'fuseblk', + 'fusectl', + 'hugetlbfs', + 'mqueue', + 'proc', + 'pstore', + 'securityfs', + 'sysfs', + 'tmpfs', + 'tracefs', + 'vfat' + ] + def show system_info = Vmstat.snapshot mounts = Sys::Filesystem.mounts @disks = [] mounts.each do |mount| - options = mount.options.split(', ') + mount_options = mount.options.split(',') - next unless excluded_mounts.each { |em| break if options.include?(em) } + next if (EXCLUDED_MOUNT_OPTIONS & mount_options).any? + next if (EXCLUDED_MOUNT_TYPES & [mount.mount_type]).any? - disk = Sys::Filesystem.stat(mount.mount_point) - @disks.push({ + begin + disk = Sys::Filesystem.stat(mount.mount_point) + @disks.push({ bytes_total: disk.bytes_total, bytes_used: disk.bytes_used, disk_name: mount.name, mount_path: disk.path - }) + }) + rescue Sys::Filesystem::Error + end end @cpus = system_info.cpus.length