class Freydis::Cryptsetup

Public Class Methods

new(data) click to toggle source
# File lib/freydis/cryptsetup.rb, line 5
def initialize(data)
  @data = data
  @dev_ids = [
    "/dev/disk/by-id/" + @data[:disk_id] ||= " ",
    "/dev/disk/by-uuid/" + @data[:disk_uuid] ||= " ",
    "/dev/disk/by-partuuid/" + @data[:disk_partuuid] ||= " ",
    "/dev/" + @data[:disk]
  ]
  @mapper_name = "freydis-enc"
  @mountpoint ="/mnt/freydis"
end

Public Instance Methods

close() click to toggle source
# File lib/freydis/cryptsetup.rb, line 37
def close
  umount
  exec "cryptsetup -v close #{@mapper_name}" if File.exists? "/dev/mapper/#{@mapper_name}"
end
encrypt() click to toggle source
# File lib/freydis/cryptsetup.rb, line 17
def encrypt
  puts "Encrypting disk..."
  @dev_ids.each { |f|
    if File.exists? f
      exec "cryptsetup -v --type luks2 --verify-passphrase luksFormat #{f}"
      break if $?.success?
    end
  }
end
format() click to toggle source
# File lib/freydis/cryptsetup.rb, line 42
def format
  exec "mkfs.ext4 /dev/mapper/#{@mapper_name}"
end
mount() click to toggle source
# File lib/freydis/cryptsetup.rb, line 46
def mount
  create_mountpoint
  puts "Mounting disk at #{@mountpoint}"
  exec "mount -t ext4 /dev/mapper/#{@mapper_name} #{@mountpoint}"
end
open() click to toggle source
# File lib/freydis/cryptsetup.rb, line 27
def open
  puts "Openning disk #{@mapper_name}..."
  @dev_ids.each { |f|
    if File.exist? f
      exec "cryptsetup -v open #{f} #{@mapper_name}"
      break if $?.success?
    end
  }
end

Private Instance Methods

create_mountpoint() click to toggle source
# File lib/freydis/cryptsetup.rb, line 54
def create_mountpoint
  if Process.uid === 0
    Dir.mkdir @mountpoint unless Dir.exist? @mountpoint
  else
    exec "mkdir -p #{@mountpoint}" unless Dir.exist? @mountpoint
  end
end
exec(command) click to toggle source
# File lib/freydis/cryptsetup.rb, line 69
def exec(command)
  sudo = Process.uid != 0 ? 'sudo' : ''
  if !system("#{sudo} #{command}")
    raise StandardError, "[-] #{command}"
  end
end
umount() click to toggle source
# File lib/freydis/cryptsetup.rb, line 62
def umount
  dir_length = Dir.glob("#{@mountpoint}/*").length
  if dir_length >= 1 # should contain lost+found if mount
    exec "umount #{@mountpoint}"
  end
end