hiera-eyaml 3.2.1 → 3.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 67081f4016df05d739c387a5565632e3af0afa51367b505f3552b6c008a47c93
4
- data.tar.gz: 573dfd56dc711d1b4722a67fc42a558c50eb38f43d56d3fccb79fe0d21d2a766
3
+ metadata.gz: 5bfbd5d31fef9569be60fa1914e921a042203d41c83925cb908173d74963df05
4
+ data.tar.gz: f93f91ef3fa2c34cef964e7e5b5a3b64dde0e1cc2ddb4ad06a0ea94b251bbf4e
5
5
  SHA512:
6
- metadata.gz: 40e0c1fa73fe82f1b563580d0b4cdf26f402e1c9ee4d7c0b023ed9ad1941ced96f60dbb6e26fbefe3dce99a0b1c0e2816efbec09263b57c9ff5589d727353434
7
- data.tar.gz: 86313762de24804bde617a78f865f3686e1d5ef0f011b4e5e786f0ec7401c9caac0702fb67ca332ab107b6f81dc0c674bea9ff268bab7f985c582a8ad21c0ad9
6
+ metadata.gz: e060aeb86e2f48506413629c9664441c4d1b0fa9862be7c7136e414df7e015a477a399b0453893b2b68d92751b6a2893cf5bbb898fdd6aea0d18b91611678761
7
+ data.tar.gz: de656da85d672bdc7b950c21663140cba2eb5c980abdeed0e7f44961f881ac5193c5e394c5e202b5a32dc78086b0e40bda73ada9b6615add4a7640c717934ee9
data/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [v3.2.2](https://github.com/voxpupuli/hiera-eyaml/tree/v3.2.2) (2021-05-03)
6
+
7
+ [Full Changelog](https://github.com/voxpupuli/hiera-eyaml/compare/v3.2.1...v3.2.2)
8
+
9
+ **Fixed bugs:**
10
+
11
+ - Using `3.2.1` for editing an eyaml created with `3.2.0` will mess up formatting [\#318](https://github.com/voxpupuli/hiera-eyaml/issues/318)
12
+ - Fix block formatting when editing [\#319](https://github.com/voxpupuli/hiera-eyaml/pull/319) ([kenyon](https://github.com/kenyon))
13
+
14
+ **Closed issues:**
15
+
16
+ - Concerns about the encrypted? method [\#316](https://github.com/voxpupuli/hiera-eyaml/issues/316)
17
+
5
18
  ## [v3.2.1](https://github.com/voxpupuli/hiera-eyaml/tree/v3.2.1) (2021-02-16)
6
19
 
7
20
  [Full Changelog](https://github.com/voxpupuli/hiera-eyaml/compare/v3.2.0...v3.2.1)
data/Gemfile CHANGED
@@ -8,7 +8,7 @@ group :development do
8
8
  gem "rspec-expectations", '~> 3.1.0'
9
9
  gem "hiera-eyaml-plaintext"
10
10
  gem "puppet", ENV['PUPPET_VERSION'] || '>= 7'
11
- gem 'github_changelog_generator', :require => false, :git => 'https://github.com/voxpupuli/github-changelog-generator', :branch => 'voxpupuli_essential_fixes'
11
+ gem 'github_changelog_generator'
12
12
  gem "activesupport"
13
13
  end
14
14
 
@@ -2,7 +2,7 @@ class Hiera
2
2
  module Backend
3
3
  module Eyaml
4
4
 
5
- VERSION = "3.2.1"
5
+ VERSION = "3.2.2"
6
6
  DESCRIPTION = "Hiera-eyaml is a backend for Hiera which provides OpenSSL encryption/decryption for Hiera properties"
7
7
 
8
8
  class RecoverableError < StandardError
@@ -4,34 +4,36 @@ require 'hiera/backend/eyaml/encryptor'
4
4
  require 'hiera/backend/eyaml'
5
5
  require 'base64'
6
6
 
7
-
8
7
  class Hiera
9
8
  module Backend
10
9
  module Eyaml
11
10
  module Parser
12
11
  class EncToken < Token
13
- @@tokens_map = Hash.new()
12
+ @@tokens_map = {}
14
13
  @@encrypt_unchanged = true
15
14
  attr_reader :format, :cipher, :encryptor, :indentation, :plain_text, :id
15
+
16
16
  def self.encrypted_value(format, encryption_scheme, cipher, match, indentation = '')
17
17
  decryptor = Encryptor.find encryption_scheme
18
- plain_text = decryptor.decrypt( decryptor.decode cipher )
18
+ plain_text = decryptor.decrypt(decryptor.decode(cipher))
19
19
  EncToken.new(format, plain_text, decryptor, cipher, match, indentation)
20
20
  end
21
+
21
22
  def self.decrypted_value(format, plain_text, encryption_scheme, match, id, indentation = '')
22
23
  encryptor = Encryptor.find encryption_scheme
23
- cipher = encryptor.encode( encryptor.encrypt plain_text )
24
- id_number = id.nil? ? nil : id.gsub(/\(|\)/, "").to_i
24
+ cipher = encryptor.encode(encryptor.encrypt(plain_text))
25
+ id_number = id.nil? ? nil : id.gsub(/\(|\)/, '').to_i
25
26
  EncToken.new(format, plain_text, encryptor, cipher, match, indentation, id_number)
26
27
  end
28
+
27
29
  def self.plain_text_value(format, plain_text, encryption_scheme, match, id, indentation = '')
28
30
  encryptor = Encryptor.find encryption_scheme
29
- id_number = id.gsub(/\(|\)/,"").to_i unless id.nil?
30
- EncToken.new(format, plain_text, encryptor, "", match, indentation, id_number)
31
+ id_number = id.gsub(/\(|\)/, '').to_i unless id.nil?
32
+ EncToken.new(format, plain_text, encryptor, '', match, indentation, id_number)
31
33
  end
32
34
 
33
35
  def self.tokens_map
34
- return @@tokens_map
36
+ @@tokens_map
35
37
  end
36
38
 
37
39
  def self.set_encrypt_unchanged(encrypt_unchanged)
@@ -39,12 +41,12 @@ class Hiera
39
41
  end
40
42
 
41
43
  def self.encrypt_unchanged
42
- return @@encrypt_unchanged
44
+ @@encrypt_unchanged
43
45
  end
44
46
 
45
47
  def initialize(format, plain_text, encryptor, cipher, match = '', indentation = '', id = nil)
46
48
  @format = format
47
- @plain_text = Utils.convert_to_utf_8( plain_text )
49
+ @plain_text = Utils.convert_to_utf_8(plain_text)
48
50
  @encryptor = encryptor
49
51
  @cipher = cipher
50
52
  @indentation = indentation
@@ -52,65 +54,64 @@ class Hiera
52
54
  super(match)
53
55
  end
54
56
 
55
- def to_encrypted(args={})
57
+ def to_encrypted(args = {})
56
58
  label = args[:label]
57
59
  label_string = label.nil? ? '' : "#{label}: "
58
60
  format = args[:format].nil? ? @format : args[:format]
59
61
  encryption_method = args[:change_encryption]
60
- if encryption_method != nil
62
+ unless encryption_method.nil?
61
63
  @encryptor = Encryptor.find encryption_method
62
64
  @cipher = Base64.strict_encode64(@encryptor.encrypt(@plain_text))
63
65
  end
64
66
  case format
65
- when :block
66
- chevron = (args[:use_chevron].nil? || args[:use_chevron]) ? ">\n" : ''
67
- "#{label_string}#{chevron}" + @indentation + "ENC[#{@encryptor.tag},#{@cipher}]".scan(/.{1,60}/).join("\n" + @indentation)
68
- when :string
69
- ciphertext = @cipher.gsub(/[\n\r]/, "")
70
- "#{label_string}ENC[#{@encryptor.tag},#{ciphertext}]"
71
- else
72
- raise "#{@format} is not a valid format"
67
+ when :block
68
+ @cipher = @cipher.gsub(/\s/, '')
69
+ chevron = args[:use_chevron].nil? || args[:use_chevron] ? ">\n" : ''
70
+ "#{label_string}#{chevron}" + @indentation + "ENC[#{@encryptor.tag},#{@cipher}]".scan(/.{1,60}/).join("\n" + @indentation)
71
+ when :string
72
+ ciphertext = @cipher.gsub(/[\n\r]/, '')
73
+ "#{label_string}ENC[#{@encryptor.tag},#{ciphertext}]"
74
+ else
75
+ raise "#{@format} is not a valid format"
73
76
  end
74
77
  end
75
78
 
76
- def to_decrypted(args={})
79
+ def to_decrypted(args = {})
77
80
  label = args[:label]
78
81
  label_string = label.nil? ? '' : "#{label}: "
79
82
  format = args[:format].nil? ? @format : args[:format]
80
83
  index = args[:index].nil? ? '' : "(#{args[:index]})"
81
- if @@encrypt_unchanged == false
82
- EncToken.tokens_map[index] = @plain_text
83
- end
84
+ EncToken.tokens_map[index] = @plain_text if @@encrypt_unchanged == false
84
85
 
85
86
  case format
86
- when :block
87
- chevron = (args[:use_chevron].nil? || args[:use_chevron]) ? ">\n" : ''
88
- "#{label_string}#{chevron}" + indentation + "DEC#{index}::#{@encryptor.tag}[" + @plain_text + "]!"
89
- when :string
90
- "#{label_string}DEC#{index}::#{@encryptor.tag}[" + @plain_text + "]!"
91
- else
92
- raise "#{@format} is not a valid format"
87
+ when :block
88
+ chevron = args[:use_chevron].nil? || args[:use_chevron] ? ">\n" : ''
89
+ "#{label_string}#{chevron}" + indentation + "DEC#{index}::#{@encryptor.tag}[" + @plain_text + ']!'
90
+ when :string
91
+ "#{label_string}DEC#{index}::#{@encryptor.tag}[" + @plain_text + ']!'
92
+ else
93
+ raise "#{@format} is not a valid format"
93
94
  end
94
95
  end
95
96
 
96
97
  def to_plain_text
97
98
  @plain_text
98
99
  end
99
-
100
100
  end
101
101
 
102
102
  class EncTokenType < TokenType
103
103
  def create_enc_token(match, type, enc_comma, cipher, indentation = '')
104
- encryption_scheme = enc_comma.nil? ? Eyaml.default_encryption_scheme : enc_comma.split(",").first
104
+ encryption_scheme = enc_comma.nil? ? Eyaml.default_encryption_scheme : enc_comma.split(',').first
105
105
  EncToken.encrypted_value(type, encryption_scheme, cipher, match, indentation)
106
106
  end
107
107
  end
108
108
 
109
109
  class EncHieraTokenType < EncTokenType
110
110
  def initialize
111
- @regex = /ENC\[(\w+,)?([a-zA-Z0-9\+\/ =\n]+?)\]/
112
- @string_token_type = EncStringTokenType.new()
111
+ @regex = %r{ENC\[(\w+,)?([a-zA-Z0-9+/ =\n]+?)\]}
112
+ @string_token_type = EncStringTokenType.new
113
113
  end
114
+
114
115
  def create_token(string)
115
116
  @string_token_type.create_token(string.gsub(/\s/, ''))
116
117
  end
@@ -118,58 +119,55 @@ class Hiera
118
119
 
119
120
  class EncStringTokenType < EncTokenType
120
121
  def initialize
121
- @regex = /ENC\[(\w+,)?([a-zA-Z0-9\+\/=]+?)\]/
122
+ @regex = %r{ENC\[(\w+,)?([a-zA-Z0-9+/=]+?)\]}
122
123
  end
124
+
123
125
  def create_token(string)
124
126
  md = @regex.match(string)
125
- self.create_enc_token(string, :string, md[1], md[2])
127
+ create_enc_token(string, :string, md[1], md[2])
126
128
  end
127
129
  end
128
130
 
129
131
  class EncBlockTokenType < EncTokenType
130
132
  def initialize
131
- @regex = />\n(\s*)ENC\[(\w+,)?([a-zA-Z0-9\+\/=\s]+?)\]/
133
+ @regex = %r{>\n(\s*)ENC\[(\w+,)?([a-zA-Z0-9+/=\s]+?)\]}
132
134
  end
135
+
133
136
  def create_token(string)
134
137
  md = @regex.match(string)
135
- self.create_enc_token(string, :block, md[2], md[3], md[1])
138
+ create_enc_token(string, :block, md[2], md[3], md[1])
136
139
  end
137
140
  end
138
141
 
139
142
  class DecStringTokenType < TokenType
140
143
  def initialize
141
- @regex = /DEC(\(\d+\))?::(\w+)\[(.+?)\]\!/m
144
+ @regex = /DEC(\(\d+\))?::(\w+)\[(.+?)\]!/m
142
145
  end
146
+
143
147
  def create_token(string)
144
148
  md = @regex.match(string)
145
- if (EncToken.encrypt_unchanged == false)
146
- unless md[1].nil?
147
- if md[3] == EncToken.tokens_map[md[1]]
148
- return EncToken.plain_text_value(:string, md[3], md[2], string, md[1])
149
- end
150
- end
149
+ if EncToken.encrypt_unchanged == false && !md[1].nil? && (md[3] == EncToken.tokens_map[md[1]])
150
+ return EncToken.plain_text_value(:string, md[3], md[2], string, md[1])
151
151
  end
152
+
152
153
  EncToken.decrypted_value(:string, md[3], md[2], string, md[1])
153
154
  end
154
155
  end
155
156
 
156
157
  class DecBlockTokenType < TokenType
157
158
  def initialize
158
- @regex = />\n(\s*)DEC(\(\d+\))?::(\w+)\[(.+?)\]\!/m
159
+ @regex = />\n(\s*)DEC(\(\d+\))?::(\w+)\[(.+?)\]!/m
159
160
  end
161
+
160
162
  def create_token(string)
161
163
  md = @regex.match(string)
162
- if (EncToken.encrypt_unchanged == false)
163
- unless md[2].nil?
164
- if md[4] == EncToken.tokens_map[md[2]]
165
- return EncToken.plain_text_value(:string, md[4], md[3], string, md[2])
166
- end
167
- end
164
+ if EncToken.encrypt_unchanged == false && !md[2].nil? && (md[4] == EncToken.tokens_map[md[2]])
165
+ return EncToken.plain_text_value(:string, md[4], md[3], string, md[2])
168
166
  end
167
+
169
168
  EncToken.decrypted_value(:block, md[4], md[3], string, md[2], md[1])
170
169
  end
171
170
  end
172
-
173
171
  end
174
172
  end
175
173
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiera-eyaml
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.1
4
+ version: 3.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Poulton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-16 00:00:00.000000000 Z
11
+ date: 2021-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: optimist
@@ -106,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  - !ruby/object:Gem::Version
107
107
  version: '0'
108
108
  requirements: []
109
- rubygems_version: 3.1.4
109
+ rubygems_version: 3.1.6
110
110
  signing_key:
111
111
  specification_version: 4
112
112
  summary: OpenSSL Encryption backend for Hiera