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 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