rex-random_identifier 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|