gitlab-license 2.2.0 → 2.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b5090d0ea93ebe93a8ae432f94f6cafb36247511d024123140d010d241f2f133
4
- data.tar.gz: 160af752702b9c305ecfe9d6405ec1dc4b1eff19e9bf3f89a8a7f79913013099
3
+ metadata.gz: 7446407f434ff04d36c14ef4ee97be748000280b8abf6e23b83ca6a78a6f1ce5
4
+ data.tar.gz: 8604082fe40f6684eeec09a90f6c7fccc25a0e8df672637889d39894b92efc1d
5
5
  SHA512:
6
- metadata.gz: a6d58d7a27ff46ac88e7da9d92c7a3c5854777f8f49c7630a9b72b792b8ca75de3611893a5e9555fb45be94781d5bf760c10971e23f8916e00d0f19326a1e6ea
7
- data.tar.gz: a5e5e07714819ab014a656953a99b5c8f32c4ed494c130a6b535f1810f967453aa0d71b38c28a00eb321bf0e28fe18f16bdb5fc953bd0e889025bd7ae558dc24
6
+ metadata.gz: 05e748a228c17e433a5b725835e79e66b564fe82fb3ebb922e80e9b892c61e27caf4dd518a9ea6d1f086d16d1bd405bb36ee8c4fc1ccf73db1110d3f49d0e44b
7
+ data.tar.gz: ba3caed401ef9783d01c1fe16c7e8cf1807e21c35b61ea99d0be3b127d9f6c815a9b28c56c32e28eac6b4b4bad5d60ffee4ea58a198b1ca23649e08e1503d946
data/README.md CHANGED
@@ -18,6 +18,17 @@ Or install it yourself as:
18
18
 
19
19
  $ gem install gitlab-license
20
20
 
21
+ ## Release
22
+
23
+ To release a new version of this gem, follow these steps:
24
+
25
+ 1. Bump the `VERSION` constant in [`lib/gitlab/license/version.rb`](https://dev.gitlab.org/gitlab/gitlab-license/-/blob/master/lib/gitlab/license/version.rb#L3). This is typically merged as part of the feature MR.
26
+ 1. Create a [new release](https://dev.gitlab.org/gitlab/gitlab-license/-/releases) in the project (e.g. `v2.1.0`). For more details on creating a new release, refer to the [documentation](https://dev.gitlab.org/help/user/project/releases/index.md#create-a-release).
27
+ 1. [Build the gem](https://guides.rubygems.org/command-reference/#gem-build) to be published: `gem build gitlab-license.gemspec`
28
+ 1. [Publish the gem](https://guides.rubygems.org/publishing) to Rubygems: `gem push gitlab-license-2.1.0.gem`
29
+ - Note you will need to be added as an owner in Rubygems in order to publish.
30
+ - Once this is published, the new version of the gem can be installed in other projects like CustomersDot or GitLab via bundler or using `gem install` directly.
31
+
21
32
  ## Usage
22
33
 
23
34
  ```ruby
@@ -48,17 +59,17 @@ license.licensee = {
48
59
  "Email" => "douwe@gitlab.com"
49
60
  }
50
61
 
51
- # The date the license starts.
62
+ # The date the license starts.
52
63
  # Required.
53
64
  license.starts_at = Date.new(2015, 4, 24)
54
- # The date the license expires.
65
+ # The date the license expires.
55
66
  # Not required, to allow lifetime licenses.
56
67
  license.expires_at = Date.new(2016, 4, 23)
57
68
 
58
69
  # The below dates are hardcoded in the license so that you can play with the
59
70
  # period after which there are "repercussions" to license expiration.
60
71
 
61
- # The date admins will be notified about the license's pending expiration.
72
+ # The date admins will be notified about the license's pending expiration.
62
73
  # Not required.
63
74
  license.notify_admins_at = Date.new(2016, 4, 19)
64
75
 
@@ -66,7 +77,7 @@ license.notify_admins_at = Date.new(2016, 4, 19)
66
77
  # Not required.
67
78
  license.notify_users_at = Date.new(2016, 4, 23)
68
79
 
69
- # The date "changes" like code pushes, issue or merge request creation
80
+ # The date "changes" like code pushes, issue or merge request creation
70
81
  # or modification and project creation will be blocked.
71
82
  # Not required.
72
83
  license.block_changes_at = Date.new(2016, 5, 7)
@@ -17,9 +17,9 @@ Gem::Specification.new do |spec|
17
17
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
18
  spec.require_paths = ['lib']
19
19
 
20
- spec.required_ruby_version = '>= 2.3.0'
20
+ spec.required_ruby_version = '>= 2.7.0'
21
21
 
22
- spec.add_development_dependency 'bundler', '~> 1.9'
22
+ spec.add_development_dependency 'bundler', '~> 2.4'
23
23
  spec.add_development_dependency 'byebug'
24
24
  spec.add_development_dependency 'rake', '~> 10.0'
25
25
  spec.add_development_dependency 'rspec', '~> 3.9'
@@ -1,5 +1,5 @@
1
1
  module Gitlab
2
2
  class License
3
- VERSION = '2.2.0'.freeze
3
+ VERSION = '2.3.0'.freeze
4
4
  end
5
5
  end
@@ -15,6 +15,7 @@ module Gitlab
15
15
 
16
16
  class << self
17
17
  attr_reader :encryption_key
18
+ attr_reader :fallback_decryption_keys
18
19
  @encryption_key = nil
19
20
 
20
21
  def encryption_key=(key)
@@ -24,6 +25,19 @@ module Gitlab
24
25
  @encryptor = nil
25
26
  end
26
27
 
28
+ def fallback_decryption_keys=(keys)
29
+ unless keys
30
+ @fallback_decryption_keys = nil
31
+ return
32
+ end
33
+
34
+ unless keys.is_a?(Enumerable) && keys.all? { |key| key.is_a?(OpenSSL::PKey::RSA) }
35
+ raise ArgumentError, 'Invalid fallback RSA encryption keys provided.'
36
+ end
37
+
38
+ @fallback_decryption_keys = Array(keys)
39
+ end
40
+
27
41
  def encryptor
28
42
  @encryptor ||= Encryptor.new(encryption_key)
29
43
  end
@@ -33,11 +47,7 @@ module Gitlab
33
47
 
34
48
  data = Boundary.remove_boundary(data)
35
49
 
36
- begin
37
- license_json = encryptor.decrypt(data)
38
- rescue Encryptor::Error
39
- raise ImportError, 'License data could not be decrypted.'
40
- end
50
+ license_json = decrypt_with_fallback_keys(data)
41
51
 
42
52
  begin
43
53
  attributes = JSON.parse(license_json)
@@ -47,6 +57,22 @@ module Gitlab
47
57
 
48
58
  new(attributes)
49
59
  end
60
+
61
+ def decrypt_with_fallback_keys(data)
62
+ keys_to_try = Array(encryption_key)
63
+ keys_to_try += fallback_decryption_keys if fallback_decryption_keys
64
+
65
+ keys_to_try.each do |decryption_key|
66
+ begin
67
+ decryptor = Encryptor.new(decryption_key)
68
+ return decryptor.decrypt(data)
69
+ rescue Encryptor::Error
70
+ next
71
+ end
72
+ end
73
+
74
+ raise ImportError, 'License data could not be decrypted.'
75
+ end
50
76
  end
51
77
 
52
78
  attr_reader :version
@@ -68,7 +94,7 @@ module Gitlab
68
94
  false
69
95
  elsif !starts_at || !starts_at.is_a?(Date)
70
96
  false
71
- elsif !expires_at && !gl_team_license?
97
+ elsif !expires_at && !gl_team_license? && !jh_team_license?
72
98
  false
73
99
  elsif expires_at && !expires_at.is_a?(Date)
74
100
  false
@@ -165,6 +191,10 @@ module Gitlab
165
191
  licensee['Company'].to_s.match?(/GitLab/i) && licensee['Email'].to_s.end_with?('@gitlab.com')
166
192
  end
167
193
 
194
+ def jh_team_license?
195
+ licensee['Company'].to_s.match?(/GitLab/i) && licensee['Email'].to_s.end_with?('@jihulab.com')
196
+ end
197
+
168
198
  def restricted?(key = nil)
169
199
  if key
170
200
  restricted? && restrictions.has_key?(key)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-license
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Douwe Maan
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2022-07-14 00:00:00.000000000 Z
13
+ date: 2023-06-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: '1.9'
21
+ version: '2.4'
22
22
  type: :development
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: '1.9'
28
+ version: '2.4'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: byebug
31
31
  requirement: !ruby/object:Gem::Requirement
@@ -133,14 +133,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
133
133
  requirements:
134
134
  - - ">="
135
135
  - !ruby/object:Gem::Version
136
- version: 2.3.0
136
+ version: 2.7.0
137
137
  required_rubygems_version: !ruby/object:Gem::Requirement
138
138
  requirements:
139
139
  - - ">="
140
140
  - !ruby/object:Gem::Version
141
141
  version: '0'
142
142
  requirements: []
143
- rubygems_version: 3.2.33
143
+ rubygems_version: 3.4.13
144
144
  signing_key:
145
145
  specification_version: 4
146
146
  summary: gitlab-license helps you generate, verify and enforce software licenses.