rex-random_identifier 0.1.2 → 0.1.3
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
- checksums.yaml.gz.sig +1 -3
- data/lib/rex/random_identifier/generator.rb +17 -5
- data/lib/rex/random_identifier/version.rb +1 -1
- data/rex-random_identifier.gemspec +2 -0
- data.tar.gz.sig +0 -0
- metadata +4 -4
- metadata.gz.sig +2 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 99048e67578081a44d00b0c29e52a7ea2cf8467f
|
|
4
|
+
data.tar.gz: 5b3fb7836e4788bba6e7c4668eb648a154dcb074
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ed1935a0b2fc5bf1f42a4296f65bd30b7c4f5be71de13e15f35338cdcb8ef425f0554b5ca83fa5656ec75b49a18868145694800408509bd1bac229166c9bc90e
|
|
7
|
+
data.tar.gz: 0d58a54c2cc2d3bbffa180676df17f3fd7fa769e4c4411764a36e1243d27788fa21dabae03ae5d32a783aa1391f7567942ec927a37c7e11d8d3cc9914c2275cd
|
checksums.yaml.gz.sig
CHANGED
|
@@ -1,3 +1 @@
|
|
|
1
|
-
�
|
|
2
|
-
N�R��
|
|
3
|
-
��<�y�U�k�eh���3�Qo���BX �'���`)9�f�M�A��N(��0��h���P\D4`
|
|
1
|
+
/[����`sS�URv��6�����/O��M��j�J�>U�͞3*�as3~�em!j5ê(USA��u�[6���}����÷C:�(��Aa*bϖ���Լ lg:^�SJ�ş�P[��ل��4jt������s�:��Ӌ���w�Ҕ��f�-E����X��o���S�'T��(sGH��c�����V���_KgLxNXI��f(�b4p�y �5�P|%���.��NS�_���������cV
|
|
@@ -33,13 +33,15 @@ class Rex::RandomIdentifier::Generator
|
|
|
33
33
|
:min_length => 3,
|
|
34
34
|
# This should be pretty universal for identifier rules
|
|
35
35
|
:char_set => Rex::Text::AlphaNumeric+"_",
|
|
36
|
-
:first_char_set => Rex::Text::LowerAlpha
|
|
36
|
+
:first_char_set => Rex::Text::LowerAlpha,
|
|
37
|
+
:forbidden => []
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
# @param opts [Hash] Options, see {DefaultOpts} for default values
|
|
40
41
|
# @option opts :max_length [Fixnum]
|
|
41
42
|
# @option opts :min_length [Fixnum]
|
|
42
43
|
# @option opts :char_set [String]
|
|
44
|
+
# @option opts :forbidden [Array]
|
|
43
45
|
def initialize(opts={})
|
|
44
46
|
# Holds all identifiers.
|
|
45
47
|
@value_by_name = {}
|
|
@@ -82,10 +84,10 @@ class Rex::RandomIdentifier::Generator
|
|
|
82
84
|
# identifier. This is what you would normally call the variable if
|
|
83
85
|
# you weren't generating it.
|
|
84
86
|
# @return [String]
|
|
85
|
-
def get(name)
|
|
87
|
+
def get(name, len = nil)
|
|
86
88
|
return @value_by_name[name] if @value_by_name[name]
|
|
87
89
|
|
|
88
|
-
@value_by_name[name] = generate
|
|
90
|
+
@value_by_name[name] = generate(len)
|
|
89
91
|
@name_by_value[@value_by_name[name]] = name
|
|
90
92
|
|
|
91
93
|
@value_by_name[name]
|
|
@@ -150,7 +152,7 @@ class Rex::RandomIdentifier::Generator
|
|
|
150
152
|
# @return [String] A string that matches <tt>[a-z][a-zA-Z0-9_]*</tt>
|
|
151
153
|
# @yield [String] The identifier before uniqueness checks. This allows
|
|
152
154
|
# you to modify the value and still avoid collisions.
|
|
153
|
-
def generate(len=nil)
|
|
155
|
+
def generate(len = nil)
|
|
154
156
|
raise ArgumentError, "len must be positive integer" if len && len < 1
|
|
155
157
|
raise ExhaustedSpaceError if @value_by_name.length >= @max_permutations
|
|
156
158
|
|
|
@@ -169,10 +171,20 @@ class Rex::RandomIdentifier::Generator
|
|
|
169
171
|
end
|
|
170
172
|
# Try to make another one if it collides with a previously
|
|
171
173
|
# generated one.
|
|
172
|
-
break unless @name_by_value.key?(ident)
|
|
174
|
+
break unless @name_by_value.key?(ident) or forbid_id?(ident)
|
|
173
175
|
end
|
|
174
176
|
|
|
175
177
|
ident
|
|
176
178
|
end
|
|
177
179
|
|
|
180
|
+
#
|
|
181
|
+
# Check if an identifier is forbidden
|
|
182
|
+
#
|
|
183
|
+
# @param str [String] String for which to check permissions
|
|
184
|
+
#
|
|
185
|
+
# @return [Boolean] Is identifier forbidden?
|
|
186
|
+
def forbid_id?(ident = nil)
|
|
187
|
+
ident.nil? or @opts[:forbidden].any? {|f| f.match(/^#{ident}$/i) }
|
|
188
|
+
end
|
|
189
|
+
|
|
178
190
|
end
|
|
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
19
19
|
spec.require_paths = ["lib"]
|
|
20
20
|
|
|
21
|
+
spec.required_ruby_version = '>= 2.2.0'
|
|
22
|
+
|
|
21
23
|
spec.add_development_dependency "bundler", "~> 1.12"
|
|
22
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
|
23
25
|
spec.add_development_dependency "rspec", "~> 3.0"
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rex-random_identifier
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David 'thelightcosine' Maloney
|
|
@@ -88,7 +88,7 @@ cert_chain:
|
|
|
88
88
|
G+Hmcg1v810agasPdoydE0RTVZgEOOMoQ07qu7JFXVWZ9ZQpHT7qJATWL/b2csFG
|
|
89
89
|
8mVuTXnyJOKRJA==
|
|
90
90
|
-----END CERTIFICATE-----
|
|
91
|
-
date: 2017-
|
|
91
|
+
date: 2017-08-25 00:00:00.000000000 Z
|
|
92
92
|
dependencies:
|
|
93
93
|
- !ruby/object:Gem::Dependency
|
|
94
94
|
name: bundler
|
|
@@ -178,7 +178,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
178
178
|
requirements:
|
|
179
179
|
- - ">="
|
|
180
180
|
- !ruby/object:Gem::Version
|
|
181
|
-
version:
|
|
181
|
+
version: 2.2.0
|
|
182
182
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
183
183
|
requirements:
|
|
184
184
|
- - ">="
|
|
@@ -186,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
186
186
|
version: '0'
|
|
187
187
|
requirements: []
|
|
188
188
|
rubyforge_project:
|
|
189
|
-
rubygems_version: 2.
|
|
189
|
+
rubygems_version: 2.6.8
|
|
190
190
|
signing_key:
|
|
191
191
|
specification_version: 4
|
|
192
192
|
summary: Random Identifier Generator
|
metadata.gz.sig
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
'
|
|
3
|
-
'��$��m
|
|
1
|
+
CZI�� }�ר.P�YM�)�Y\�a�y���9��9�@��ۅ�+�?����i�I�20����NK3�u�Rj������eْ������1�C�c͗;3�&M!W�!5�������������E*gI)�f�A�ì���Z��3m "~��(�3h���
|
|
2
|
+
Y|c"\�ݨf���܀N{+�O���G�~�Ѳ�k3ma"+��r���m"�Sv'��-SGȵ�����cR�(S�����Y��U*Be�ܿe
|