hiera-eyaml 3.2.1 → 3.2.2

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.
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