freydis 0.0.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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