freydis 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,76 +1,87 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'optparse'
2
4
 
3
5
  module Freydis
4
6
  class Options
5
- attr_reader :options
6
-
7
- def initialize(args, data_file)
8
- data = Data.new(data_file)
9
- data.load!
10
-
11
- @options = data.options
12
- parse(args)
7
+ def initialize(argv)
8
+ parse(argv)
13
9
  end
14
10
 
15
11
  private
16
12
 
17
13
  def parse(argv)
18
14
  OptionParser.new do |opts|
19
- opts.banner = "Usage: freydis.rb [options]"
15
+ opts.banner = 'Usage: freydis.rb [options]'
20
16
  opts.version = VERSION
21
17
 
22
- opts.on("-i", "--init", "Create a config file.") do
23
- @options[:init] = true
18
+ opts.on('--disk NAME', /^sd[a-z]$/, 'Use the disk NAME (e.g: sda, sdb).') do |disk|
19
+ Freydis::CONFIG.disk = Guard.disk(disk)
20
+ end
21
+
22
+ opts.on('--gpg-recipient NAME', String, 'Use gpg key NAME.') do |key|
23
+ Freydis::CONFIG.gpg_recipient = Guard.gpg(key)
24
+ end
25
+
26
+ opts.on('-p PATHS', '--paths-add PATHS', Array, 'Add absolute PATHS to the backup list.') do |paths|
27
+ paths.each do |p|
28
+ Freydis::Guard.path? p
29
+ Freydis::CONFIG.paths << p
30
+ end
31
+
24
32
  end
25
33
 
26
- opts.on("-b", "--backup", "Perform a backup.") do
27
- @options[:backup] = true
34
+ opts.on('-d PATH', '--path-del PATH', String, 'Remove absolute PATH from the backup list.') do |p|
35
+ Freydis::Guard.path? p
36
+ Freydis::CONFIG.paths.delete p if CONFIG.paths.include? p
28
37
  end
29
38
 
30
- opts.on("-r", "--restore", "Restore saved datas on your system.") do
31
- @options[:restore] = true
39
+ opts.on('-L', '--paths-list', 'List all paths from your list.') do
40
+ if Freydis::CONFIG.paths.nil?
41
+ puts 'Nothing in paths yet...'
42
+ else
43
+ puts Freydis::CONFIG.paths
44
+ end
32
45
  end
33
46
 
34
- opts.on("-e", "--encrypt", "Encrypt your device.") do
35
- @options[:encrypt] = true
47
+ # Engines options
48
+
49
+ opts.on('-e', '--encrypt', 'Encrypt and format (ext4) your device.') do
50
+ Freydis::DiskLuks.encrypt
36
51
  end
37
52
 
38
- opts.on("-o", "--open", "Open and mount encrypted device at /mnt/freydis.") do
39
- @options[:open] = true
53
+ opts.on('-o', '--open', 'Open and mount encrypted disk at /mnt/freydis.') do
54
+ Freydis::DiskLuks.open
40
55
  end
41
56
 
42
- opts.on("-c", "--close", "Umount & close encrypted device.") do
43
- @options[:close] = true
57
+ opts.on('-c', '--close', 'Umount and close encrypted disk.') do
58
+ Freydis::DiskLuks.close
44
59
  end
45
60
 
46
- opts.on("-d NAME", "--disk NAME", /^sd[a-z]$/, "To use the disk NAME (e.g: sda, sdb).") do |disk|
47
- @options[:disk] = Freydis::Guard.disk(disk)
61
+ opts.on('-b', '--backup', 'Perform a backup.') do
62
+ Freydis::Rsync.new.backup
48
63
  end
49
64
 
50
- opts.on("-L", "--path-list", "List all paths from your list.") do
51
- puts
52
- puts @options[:paths]
53
- exit
65
+ opts.on('-r', '--restore', 'Restore saved datas on your system.') do
66
+ Freydis::Rsync.new.restore
54
67
  end
55
68
 
56
- opts.on("-p PATH", "--path-add PATH", String, "Add absolute path PATH to the backup list") do |p|
57
- Freydis::Guard.path? p
58
- @options[:paths] << p if !@options[:paths].include? p
69
+ opts.on('--secrets-backup', 'Backup only secrets, including GPG keys.') do |s|
70
+ Freydis::Secrets.backup
59
71
  end
60
72
 
61
- opts.on("-d PATH", "--path-del PATH", String, "Remove absolute path PATH from the backup list.") do |p|
62
- Freydis::Guard.path? p
63
- @options[:paths].delete p if @options[:paths].include? p
73
+ opts.on('--secrets-restore', 'Restore secrets.') do |s|
74
+ Freydis::Secrets.restore
64
75
  end
65
76
 
66
- opts.on("-s", "--save", "Save currents arguments in a config file.") do
67
- @options[:save] = true
77
+ opts.on('-s', '--save', 'Save current arguments in the config file.') do
78
+ Freydis::CONFIG.save
68
79
  end
69
80
 
70
81
  begin
71
82
  opts.parse!(argv)
72
83
  rescue OptionParser::ParseError => e
73
- STDERR.puts e.message, "\n", opts
84
+ warn e.message, "\n", opts
74
85
  exit 1
75
86
  end
76
87
  end
data/lib/freydis/rsync.rb CHANGED
@@ -1,53 +1,47 @@
1
- # lib/rsync.rb
1
+ # frozen_string_literal: true
2
+
3
+ require 'mods/exec'
2
4
 
3
5
  module Freydis
4
6
  class Rsync
5
- def initialize(data)
6
- @data = data
7
- @mountpoint = '/mnt/freydis'
8
- @exclude_paths = [
9
- "/dev/*",
10
- "/proc/*",
11
- "/sys/*",
12
- "/tmp/*",
13
- "/run/*",
14
- "/mnt/*",
15
- "/media/*",
16
- "/home/*/.thumbnails/*",
17
- "/home/*/.cache/mozilla/*",
18
- "/home/*/.cache/chromium/*",
19
- "/home/*/.local/share/Trash/*",
20
- "/lost+found",
7
+ include Exec
8
+
9
+ def initialize
10
+ @workdir = '/mnt/freydis/backup/'
11
+ @exclude_paths = %w[
12
+ /dev/*
13
+ /proc/*
14
+ /sys/*
15
+ /tmp/*
16
+ /run/*
17
+ /mnt/*
18
+ /media/*
19
+ /var/lib/dhcpcd/*
20
+ /home/*/.gvfs
21
+ /home/*/.thumbnails/*
22
+ /home/*/.cache/*
23
+ /home/*/.local/share/*
24
+ /home/*/.Xauthority
25
+ /home/*/.xsession-errors
26
+ /lost+found
21
27
  ]
22
- @opts = "-aAXHvR"
28
+ @opts = '-aAXHvRx'
23
29
  end
24
30
 
25
31
  def backup
26
- add_config
27
- exil = @exclude_paths * ","
28
- save = @data[:paths] * " "
29
- @opts += " --delete"
30
- exec("rsync #{@opts} --exclude={#{exil}} #{save} #{@mountpoint}")
32
+ Freydis::DiskLuks.open
33
+ mkdir @workdir
34
+ exil = @exclude_paths * ','
35
+ save = CONFIG.paths * ' '
36
+ @opts += ' --delete'
37
+ x "rsync #{@opts} --exclude={#{exil}} #{save} #{@workdir}"
38
+ Freydis::DiskLuks.close
31
39
  end
32
40
 
33
41
  def restore
34
- exil = @exclude_paths * ","
35
- exec("rsync #{@opts} --exclude={#{exil}} #{@mountpoint} /")
36
- end
37
-
38
- private
39
-
40
- def add_config
41
- if !@data[:paths].include?("#{ENV['HOME']}/.config/freydis")
42
- @data[:paths] << "#{ENV['HOME']}/.config/freydis"
43
- end
44
- end
45
-
46
- def exec(command)
47
- sudo = Process.uid != 0 ? 'sudo' : ''
48
- if !system("#{sudo} #{command}")
49
- raise StandardError, "[-] #{command}"
50
- end
42
+ Freydis::DiskLuks.open
43
+ x "rsync #{@opts} #{@workdir} /"
44
+ Freydis::DiskLuks.close
51
45
  end
52
46
  end
53
47
  end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'date'
4
+ require 'fileutils'
5
+
6
+ module Freydis
7
+ module Secrets
8
+ # Create or Restore an archive of secrets with bsdtar
9
+ class Archive
10
+ include Exec
11
+ include Msg
12
+
13
+ def initialize(gpg)
14
+ @workdir = '/mnt/freydis/secrets'
15
+ @filename = "#{@workdir}/#{CONFIG.gpg_recipient}_#{Date.today}.tar.gz"
16
+ @restore_dir = '/tmp'
17
+ @include_paths = %w[]
18
+ @gpg = gpg
19
+ end
20
+
21
+ def create
22
+ populate_include
23
+ inc_paths = @include_paths * ' '
24
+
25
+ mkdir @workdir
26
+ info "Creating archive #{@filename}..."
27
+ bsdtar "--acls --xattrs -cpvf #{@filename} #{inc_paths}"
28
+ @gpg.clean_keys
29
+ end
30
+
31
+ # Restore the most recent archive in your $HOME
32
+ def restore
33
+ last_archive = Dir.glob("#{@workdir}/*").sort[0]
34
+
35
+ mkdir @restore_dir
36
+ info "Restoring #{last_archive}..."
37
+ bsdtar "-xvf #{last_archive} -C #{@restore_dir}"
38
+ @gpg.import_keys @restore_dir
39
+ @gpg.clean_keys @restore_dir
40
+ end
41
+
42
+ protected
43
+
44
+ def populate_include
45
+ @gpg.export_keys unless File.exist? @gpg.seckey_path
46
+ search_paths(%W[#{ENV['HOME']}/.password-store
47
+ #{@gpg.seckey_path}
48
+ #{@gpg.pubkey_path}])
49
+ end
50
+
51
+ private
52
+
53
+ def search_paths(paths)
54
+ paths.each do |p|
55
+ if Dir.exist?(p) || File.exist?(p)
56
+ info "Found #{p}, add to archive..."
57
+ @include_paths << p
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Freydis
4
+ module Secrets
5
+ class GPG
6
+ include Exec
7
+ include Msg
8
+
9
+ attr_reader :seckey_path, :pubkey_path
10
+
11
+ def initialize
12
+ @recipient = Guard.gpg(CONFIG.gpg_recipient)
13
+ @seckey_path = "/tmp/#{@recipient}-secret.key"
14
+ @pubkey_path = "/tmp/#{@recipient}-public.key"
15
+ end
16
+
17
+ def export_keys
18
+ info "Exporting keys for #{@recipient}..."
19
+ gpg "-a --export-secret-keys --armor #{@recipient} >#{@seckey_path}"
20
+ gpg "-a --export --armor #{@recipient} >#{@pubkey_path}"
21
+ end
22
+
23
+ def import_keys(prefix = nil)
24
+ is_key = `gpg -K | grep #{@recipient}`.chomp
25
+ if is_key.empty?
26
+ info "Importing key #{@recipient}..."
27
+ gpg_import(prefix)
28
+ else
29
+ info "Key #{@recipient} is alrealy present, skip import."
30
+ end
31
+ end
32
+
33
+ def clean_keys(prefix = nil)
34
+ if prefix
35
+ shred "#{prefix}#{@seckey_path}", "#{prefix}#{@pubkey_path}"
36
+ else
37
+ shred @seckey_path, @pubkey_path
38
+ end
39
+ success "Clean keys."
40
+ end
41
+
42
+ protected
43
+
44
+ def gpg_import(prefix)
45
+ if prefix
46
+ gpg "--armor --import #{prefix}#{@seckey_path}"
47
+ gpg "--armor --import #{prefix}#{@pubkey_path}"
48
+ else
49
+ gpg "--armor --import #{@seckey_path}"
50
+ gpg "--armor --import #{@pubkey_path}"
51
+ end
52
+ end
53
+
54
+ private
55
+
56
+ def gpg(command)
57
+ unless system("gpg #{command}")
58
+ error "Exe: gpg #{command}"
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'mods/msg'
4
+ require_relative 'secrets/gpg'
5
+ require_relative 'secrets/archive'
6
+
7
+ module Freydis
8
+ module Secrets
9
+ extend Msg
10
+
11
+ def self.backup
12
+ DiskLuks.open
13
+ info 'Backup secrets...'
14
+ gpg = GPG.new
15
+ archive = Archive.new(gpg)
16
+ archive.create
17
+ DiskLuks.close
18
+ end
19
+
20
+ def self.restore
21
+ DiskLuks.open
22
+ info 'Restoring secrets...'
23
+ gpg = GPG.new
24
+ archive = Archive.new(gpg)
25
+ archive.restore
26
+ DiskLuks.close
27
+ end
28
+ end
29
+ end
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Freydis
2
- VERSION = '0.0.3'.freeze
4
+ VERSION = '0.1.0'
3
5
  end
4
6
 
data/lib/freydis.rb CHANGED
@@ -1,32 +1,27 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'freydis/version'
2
4
  require_relative 'freydis/options'
3
- require_relative 'freydis/init'
4
- require_relative 'freydis/data'
5
+ require_relative 'freydis/config'
5
6
  require_relative 'freydis/disk'
6
7
  require_relative 'freydis/disk_luks'
7
8
  require_relative 'freydis/cryptsetup'
8
9
  require_relative 'freydis/rsync'
9
- require_relative 'freydis/guard'
10
10
  require_relative 'freydis/error'
11
+ require_relative 'freydis/guard'
12
+ require_relative 'freydis/secrets'
11
13
 
12
14
  module Freydis
15
+ CONFIG = Config.new
16
+ CONFIG.load
17
+
13
18
  class Main
14
19
  def initialize(args)
15
- @config = args[:config]
16
- @cli = args[:cli].options
17
- @disk = @cli[:disk]
18
-
19
- Freydis::Guard.disk(@cli[:disk])
20
+ @argv = args[:argv]
20
21
  end
21
22
 
22
23
  def start
23
- init_config
24
- encrypt_disk
25
- backup
26
- restoring
27
- opening
28
- closing
29
- save if @cli[:save]
24
+ Options.new(@argv)
30
25
  end
31
26
 
32
27
  def bye
@@ -34,67 +29,5 @@ module Freydis
34
29
  puts "Bye !"
35
30
  exit
36
31
  end
37
-
38
- private
39
-
40
- def init_config
41
- return unless @cli[:init]
42
- Init.run(@cli)
43
- save
44
- end
45
-
46
- def encrypt_disk
47
- return unless @cli[:encrypt]
48
- puts "Encrypting disk #{@disk}..."
49
- disk = Disk.new(@disk)
50
- disk.encrypt(@data)
51
- end
52
-
53
- def backup
54
- return unless @cli[:backup]
55
- raise ArgumentError, "No paths to backup" unless @cli[:paths]
56
- raise ArgumentError, "No paths to backup" if @cli[:paths] === []
57
-
58
- puts " ==> Backup on #{@cli[:disk]}..."
59
- disk = DiskLuks.new(@cli)
60
- disk.open
61
- rsync = Rsync.new(@cli)
62
- rsync.backup
63
- disk.close
64
- end
65
-
66
- def restoring
67
- return unless @cli[:restore]
68
- puts
69
- puts " ===> Restoring..."
70
- disk = DiskLuks.new(@cli)
71
- disk.open
72
- rsync = Rsync.new(@cli)
73
- rsync.restore
74
- disk.close
75
- end
76
-
77
- def opening
78
- return unless @cli[:open]
79
- puts
80
- puts " ===> Opening disk #{@disk}."
81
- disk = DiskLuks.new(@cli)
82
- disk.open
83
- end
84
-
85
- def closing
86
- return unless @cli[:close]
87
- puts
88
- puts " ===> Closing disk #{@disk}."
89
- disk = DiskLuks.new(@cli)
90
- disk.close
91
- end
92
-
93
- def save
94
- puts
95
- puts " ===> Saving options to #{@config}..."
96
- Data.new(@config, @cli).save
97
- end
98
32
  end
99
33
  end
100
-
data/lib/mods/exec.rb ADDED
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Exec
4
+ def x(command)
5
+ sudo = Process.uid != 0 ? 'sudo' : ''
6
+ unless system("#{sudo} #{command}")
7
+ Msg.error "Execute: #{command}"
8
+ end
9
+ end
10
+
11
+ def mkdir(dir)
12
+ if Process.uid == 0
13
+ FileUtils.mkdir_p dir
14
+ else
15
+ x "mkdir -p #{dir}"
16
+ end
17
+ end
18
+
19
+ def bsdtar(args)
20
+ x "bsdtar #{args}"
21
+ end
22
+
23
+ def shred(*keys)
24
+ keys_join = keys * ' '
25
+ x "shred -u #{keys_join}"
26
+ end
27
+ end
data/lib/mods/msg.rb ADDED
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Msg
4
+ def info(msg)
5
+ puts "> #{msg}"
6
+ end
7
+
8
+ def success(msg)
9
+ puts " ===> #{msg}"
10
+ end
11
+
12
+ def error(msg)
13
+ warn "[-] #{msg}"
14
+ exit 1
15
+ end
16
+ end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: freydis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - szorfein
@@ -10,64 +10,71 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIETTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQsFADAoMSYwJAYDVQQDDB1zem9y
14
- ZmVpbi9EQz1wcm90b25tYWlsL0RDPWNvbTAeFw0yMTA1MTEyMTAzNDZaFw0yMjA1
15
- MTEyMTAzNDZaMCgxJjAkBgNVBAMMHXN6b3JmZWluL0RDPXByb3Rvbm1haWwvREM9
16
- Y29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAxCTYZRndCTRy18rE
17
- exr2wig/staa0G5kt99xqaBYD0dnIRBr/GO5dFntlBVwmefQlTrNbygVUIYTb8Vg
18
- B1oX3v/LLW9SRQcWaZwou0tARqanm5WhgV1ZYQTs22endTazsDHw0uhM3V+FgDh+
19
- eR5wM9vU+SkRFHWzjVS1OxyTSCBVWb3+nrYTr/OKZ5Fm3Vo1dEQdwBEWLLXuUBxs
20
- dWEDmBk7iTJbvNdd5Kk2wfMKRMOl9NGicJl3Cb5yl5ITeZsXdOsrLBBPepTpNeq2
21
- k1goew3mEd/4pVXrdw6S5Qr6RTbTCLpKNRxWtx01vue9NN1cQ/Ds5FRkCp/Ntw/k
22
- Xroyofo4MW5fEPq+udgvVpdTfguQkpmuJg7TRiq9F5hDhEMnKUsdM2fSev9u8EvL
23
- OkidKy8bnhUOoG9qDxEG/IyibjRLl1i5jtyHa8Jb/We8poZ5LI8qjHwMPjTBhDgi
24
- EzaYV5rLGs5S1/m58XG6a+620x2tcQZph6FFbnQJ8QBuNz6zAgMBAAGjgYEwfzAJ
25
- BgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUc8XWveAjxS5fVEOZeeZe
26
- uUQmbhMwIgYDVR0RBBswGYEXc3pvcmZlaW5AcHJvdG9ubWFpbC5jb20wIgYDVR0S
27
- BBswGYEXc3pvcmZlaW5AcHJvdG9ubWFpbC5jb20wDQYJKoZIhvcNAQELBQADggGB
28
- AHuRqWvtAx1PSIEcvq1uzgBclzP+Lhp6J1f7McvbfzHAZuLo5Nv9iFHkLl2ad9gx
29
- p/X2/p8PmgiUNFSXDdB12Pn/VbX4DdoQujwXvmZbQo2KmooklHIhM6AJMafOHW1N
30
- qjHIwGvMY5bJfn+3qEQNV+yip6KnCUQVklw132IFvdusoBOPfEP48p41deXbIhNP
31
- GNJQ4qkZfXWdLumikb2Y432kIIeugIIAL57VD+wwDUJ3MciiLufYT7v9WNSFRenV
32
- JDNGIh3AYiCnNO2DWIArrW6/jaof3A0OnjRQ64vS+EKhZFp8+y6rfC3Clrfjdjse
33
- a4zH3TI57bnzfkx5xhjhIu6LJnBpk0x8Y/N2kVmwB+GonFiRcVzZpIfOLvy03tn5
34
- dAHfUn//hrBJAT9EXRHNUoLyEmFsCPabTCXjQH6EM2uBcsrjQN4SlgBNzsKc8bS4
35
- F9Dl4EPzjBJOgQWf+NxzxNuNKI46Lp5Q8AI+xtDUHAPbSswHa40BA6ChFehP+j0L
36
- fg==
13
+ MIIEhTCCAu2gAwIBAgIBATANBgkqhkiG9w0BAQsFADBEMREwDwYDVQQDDAhzem9y
14
+ ZmVpbjEaMBgGCgmSJomT8ixkARkWCnByb3Rvbm1haWwxEzARBgoJkiaJk/IsZAEZ
15
+ FgNjb20wHhcNMjIwOTA4MDYyNjE5WhcNMjMwOTA4MDYyNjE5WjBEMREwDwYDVQQD
16
+ DAhzem9yZmVpbjEaMBgGCgmSJomT8ixkARkWCnByb3Rvbm1haWwxEzARBgoJkiaJ
17
+ k/IsZAEZFgNjb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDEJNhl
18
+ Gd0JNHLXysR7GvbCKD+y1prQbmS333GpoFgPR2chEGv8Y7l0We2UFXCZ59CVOs1v
19
+ KBVQhhNvxWAHWhfe/8stb1JFBxZpnCi7S0BGpqeblaGBXVlhBOzbZ6d1NrOwMfDS
20
+ 6EzdX4WAOH55HnAz29T5KREUdbONVLU7HJNIIFVZvf6ethOv84pnkWbdWjV0RB3A
21
+ ERYste5QHGx1YQOYGTuJMlu8113kqTbB8wpEw6X00aJwmXcJvnKXkhN5mxd06yss
22
+ EE96lOk16raTWCh7DeYR3/ilVet3DpLlCvpFNtMIuko1HFa3HTW+57003VxD8Ozk
23
+ VGQKn823D+ReujKh+jgxbl8Q+r652C9Wl1N+C5CSma4mDtNGKr0XmEOEQycpSx0z
24
+ Z9J6/27wS8s6SJ0rLxueFQ6gb2oPEQb8jKJuNEuXWLmO3Idrwlv9Z7ymhnksjyqM
25
+ fAw+NMGEOCITNphXmssazlLX+bnxcbpr7rbTHa1xBmmHoUVudAnxAG43PrMCAwEA
26
+ AaOBgTB/MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBRzxda94CPF
27
+ Ll9UQ5l55l65RCZuEzAiBgNVHREEGzAZgRdzem9yZmVpbkBwcm90b25tYWlsLmNv
28
+ bTAiBgNVHRIEGzAZgRdzem9yZmVpbkBwcm90b25tYWlsLmNvbTANBgkqhkiG9w0B
29
+ AQsFAAOCAYEAPhavFyzIP60Zw7y40zJhzQpMK2IWtdw9HrRJq313Ea4UT1Kgv7F9
30
+ lCFtQzI5XMzooYiLMoPz7xBMXaUz+DDFOOcgGSinVrFbfPA4rOGEkBjnlwC39lBc
31
+ AiyXFzCV7Wqn4VhtqQQyvmoNYL4Q666K+nL8/nsXZWsXtRQ119LeAvrI2A+xmYAb
32
+ FPE5bD3Jx1JCoJdVN1DmE4YYdM8mVmb0XjCK9Tp1M01EDKDvAX7f3B+X6A5D7uBq
33
+ 63X6Kx09VkntVOrifd3W4TwjDlyAMpB+50OIi3ErPnH2R4i09qnCiZmcVWATBVKw
34
+ e2QSloIAUZJwEFkrRqWPNVi8sr+BcMeuKpXaOwpbkP+xq/W2EKlUQKhPXMXS4jvC
35
+ MuTi+RjpSNKZxzBrOlK2eMIpiFrugF7nzKcM9EGnWRWUb899drCcD4VJhjPtgpn+
36
+ aEJeKq4/BlIwMlXPe+W5C8zp2i8hgG1/OYbwbGE1p2iRi1NIK7G/HyRqQjOqJxzE
37
+ LLknX69FN7/G
37
38
  -----END CERTIFICATE-----
38
- date: 2021-07-04 00:00:00.000000000 Z
39
+ date: 2022-09-20 00:00:00.000000000 Z
39
40
  dependencies: []
40
- description: " Freydis is a CLI tool to encrypt a disk device, backup and restore
41
- easyly. Freydis use `cryptsetup` and `rsync` mainly.\n"
41
+ description: 'Freydis is a CLI tool to encrypt a disk device, backup and restore easyly.
42
+ Freydis use `cryptsetup` and `rsync` mainly.
43
+
44
+ '
42
45
  email: szorfein@protonmail.com
43
46
  executables:
44
47
  - freydis
45
48
  extensions: []
46
- extra_rdoc_files:
47
- - README.md
49
+ extra_rdoc_files: []
48
50
  files:
51
+ - CHANGELOG.md
52
+ - LICENSE
49
53
  - README.md
50
54
  - bin/freydis
55
+ - freydis.gemspec
51
56
  - lib/freydis.rb
52
- - lib/freydis/.options.rb.swp
57
+ - lib/freydis/config.rb
53
58
  - lib/freydis/cryptsetup.rb
54
- - lib/freydis/data.rb
55
59
  - lib/freydis/disk.rb
56
60
  - lib/freydis/disk_luks.rb
57
61
  - lib/freydis/error.rb
58
62
  - lib/freydis/guard.rb
59
- - lib/freydis/init.rb
60
63
  - lib/freydis/options.rb
61
64
  - lib/freydis/rsync.rb
65
+ - lib/freydis/secrets.rb
66
+ - lib/freydis/secrets/archive.rb
67
+ - lib/freydis/secrets/gpg.rb
62
68
  - lib/freydis/version.rb
69
+ - lib/mods/exec.rb
70
+ - lib/mods/msg.rb
63
71
  homepage: https://github.com/szorfein/freydis
64
72
  licenses:
65
73
  - MIT
66
74
  metadata:
67
75
  bug_tracker_uri: https://github.com/szorfein/freydis/issues
68
- changelog_uri: https://github.com/szorfein/freydis/blob/master/CHANGELOG.md
76
+ changelog_uri: https://github.com/szorfein/freydis/blob/main/CHANGELOG.md
69
77
  source_code_uri: https://github.com/szorfein/freydis
70
- wiki_uri: https://github.com/szorfein/freydis/wiki
71
78
  funding_uri: https://patreon.com/szorfein
72
79
  post_install_message:
73
80
  rdoc_options: []
@@ -84,9 +91,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
91
  - !ruby/object:Gem::Version
85
92
  version: '0'
86
93
  requirements:
87
- - cryptsetup, v2.3
88
- - rsync, v3.2
89
- rubygems_version: 3.0.9
94
+ - cryptsetup
95
+ - rsync
96
+ rubygems_version: 3.3.19
90
97
  signing_key:
91
98
  specification_version: 4
92
99
  summary: Backup and Restore data from encrypted device.
metadata.gz.sig CHANGED
Binary file
Binary file