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 +4 -4
- data/README.md +15 -4
- data/gitlab-license.gemspec +2 -2
- data/lib/gitlab/license/version.rb +1 -1
- data/lib/gitlab/license.rb +36 -6
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7446407f434ff04d36c14ef4ee97be748000280b8abf6e23b83ca6a78a6f1ce5
|
4
|
+
data.tar.gz: 8604082fe40f6684eeec09a90f6c7fccc25a0e8df672637889d39894b92efc1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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)
|
data/gitlab-license.gemspec
CHANGED
@@ -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.
|
20
|
+
spec.required_ruby_version = '>= 2.7.0'
|
21
21
|
|
22
|
-
spec.add_development_dependency 'bundler', '~>
|
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'
|
data/lib/gitlab/license.rb
CHANGED
@@ -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
|
-
|
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.
|
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:
|
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: '
|
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: '
|
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.
|
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.
|
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.
|