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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7fad1c96eda18b0d8cd5490897e1934dd3fecfed
4
- data.tar.gz: 8f50e783aa50603627411989c5ca81d46830bc82
3
+ metadata.gz: 99048e67578081a44d00b0c29e52a7ea2cf8467f
4
+ data.tar.gz: 5b3fb7836e4788bba6e7c4668eb648a154dcb074
5
5
  SHA512:
6
- metadata.gz: e496290b730e277dcc0fdf66f37ba214c8a9682f9423afd96a010fe52ff8872c1891178061d3a6ada6ac2bcc2d15f1ae023225d5fc42576f2d0303cd27dc211a
7
- data.tar.gz: 61e08bf5e70e678c17541f841df15ec04f8993e75433802ed1146f15acbc06f3b78353353bdb639cd455e5a875ccd98638c188d5dbc1524e8f45f170106bb1b3
6
+ metadata.gz: ed1935a0b2fc5bf1f42a4296f65bd30b7c4f5be71de13e15f35338cdcb8ef425f0554b5ca83fa5656ec75b49a18868145694800408509bd1bac229166c9bc90e
7
+ data.tar.gz: 0d58a54c2cc2d3bbffa180676df17f3fd7fa769e4c4411764a36e1243d27788fa21dabae03ae5d32a783aa1391f7567942ec927a37c7e11d8d3cc9914c2275cd
checksums.yaml.gz.sig CHANGED
@@ -1,3 +1 @@
1
- NT��u�y�Ӄ����D��V�����\��9��s��z�����3:�b���9��Tq5B��@��`���a
2
- N�R��
3
- ��<�y�U�k�eh���3�Qo���BX �'���`)9�f�M�A��N(��0��h���P\D4`
1
+ /[����`sSURv��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
@@ -1,5 +1,5 @@
1
1
  module Rex
2
2
  module RandomIdentifier
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.3"
4
4
  end
5
5
  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.2
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-04-07 00:00:00.000000000 Z
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: '0'
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.4.8
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
- XݪMf1��چ^gr�$Q�汩�\�/'H9��_+9�:���gC ӆ�z��[�-l¸zϷ�c.�,d'B��
2
- '@唏RV`���.�$j����dG{�95�)�+^���!�R���B�~*�hW�c#M��&�baN�p
3
- '��$��m
1
+ CZI�� }�ר.PYM)�Y\�a�y���9��9�@��ۅ�+�?����iI�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