rangescan 0.1.4 → 0.2.0

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
  SHA256:
3
- metadata.gz: 85943fdeb085b7c2c3066cf997292246d2ec6c2d4fd85447ad31ebc8da586b4a
4
- data.tar.gz: c4562cf5ea80b8cd2fa744977c42b2dee961e4dfb28ffd7727fa59287a27128d
3
+ metadata.gz: 4144b13853677049e63de5a4214bffd4140923b9627aa165793bd08a5fd3664f
4
+ data.tar.gz: 5e9a1489605be94188c2a4310013062451630b12764db065af20081c1bc2d2af
5
5
  SHA512:
6
- metadata.gz: 5445af72c8e99671c8760d8b8decbaeb52bef0796e317562efa9b2e32f13be96abdbd74f368fc277796ff930229e2197836ae8dab806b872dcd89140e737254c
7
- data.tar.gz: 10453c71febba8b2d630997de509befac9b4c1e070a2478df464c4220542ec8616f3e400d413182fcd9c86393ce287a2b970a669e0f8a3a71ed05e31e0783b96
6
+ metadata.gz: e82b98bb97b2742ca54bcfd47cecde7a4bee65d7fefe841f7b76cc6dfec7832c397e8d2e422afc5f64a2533ff453bb3cf83c6ad1cbeb98948845ab5710eb84e6
7
+ data.tar.gz: 5e6e6173d6a858749fce649d25fd658a91a0d2941238f2ca730e07511e147e48440d713e07247c4a40c3299765760b403596b4122ac259a52d5e3847bfbfb4c2
@@ -0,0 +1,5 @@
1
+ version = 1
2
+
3
+ [[analyzers]]
4
+ name = "ruby"
5
+ enabled = true
data/README.md CHANGED
@@ -27,13 +27,14 @@ Usage:
27
27
 
28
28
  Options:
29
29
  [--host=HOST] # Host header
30
- [--port=N] # Port to check (80 or 443)
31
- [--scheme=SCHEME] # Scheme to use (http or https)
30
+ [--port=N] # Port
31
+ [--scheme=SCHEME] # Scheme (http or https)
32
32
  [--timeout=N] # Timeout in seconds
33
- [--user-agent=USER_AGENT] # User Agent header
34
- [--veryfy-ssl], [--no-veryfy-ssl] # Verify SSL or not
33
+ [--user-agent=USER_AGENT] # User Agent
34
+ [--verify-ssl], [--no-verify-ssl] # Whether to verify SSL or not
35
+ [--max-concurrency=N] # Concurrency limit for HTTP requests to scan
35
36
 
36
- Scan an IP range & filter by a regexp
37
+ Scan an IP range & filter by a regexp (default regexp = .)
37
38
  ```
38
39
 
39
40
  ## License
@@ -5,14 +5,15 @@ require "json"
5
5
 
6
6
  module RangeScan
7
7
  class CLI < Thor
8
- desc "scan [IP_WITH_SUBNET_MASK, REGEXP]", "Scan an IP range & filter by a regexp"
8
+ desc "scan [IP_WITH_SUBNET_MASK, REGEXP]", "Scan an IP range & filter by a regexp (default regexp = .)"
9
9
  method_option :host, type: :string, desc: "Host header"
10
10
  method_option :port, type: :numeric, desc: "Port"
11
11
  method_option :scheme, type: :string, desc: "Scheme (http or https)"
12
12
  method_option :timeout, type: :numeric, desc: "Timeout in seconds"
13
13
  method_option :user_agent, type: :string, desc: "User Agent"
14
14
  method_option :verify_ssl, type: :boolean, desc: "Whether to verify SSL or not"
15
- def scan(ip_with_subnet_mask, regexp)
15
+ method_option :max_concurrency, type: :numeric, desc: "Concurrency limit for HTTP requests to scan"
16
+ def scan(ip_with_subnet_mask, regexp = ".")
16
17
  symbolized_options = symbolize_hash_keys(options)
17
18
  range = Range.new(ip_with_subnet_mask)
18
19
 
@@ -12,6 +12,7 @@ module RangeScan
12
12
  class Scanner
13
13
  attr_reader :context
14
14
  attr_reader :host
15
+ attr_reader :max_concurrency
15
16
  attr_reader :port
16
17
  attr_reader :processor_count
17
18
  attr_reader :scheme
@@ -20,7 +21,7 @@ module RangeScan
20
21
  attr_reader :user_agent
21
22
  attr_reader :verify_ssl
22
23
 
23
- def initialize(host: nil, port: nil, scheme: "http", verify_ssl: true, timeout: 5, user_agent: nil)
24
+ def initialize(host: nil, port: nil, scheme: "http", verify_ssl: true, timeout: 5, user_agent: nil, max_concurrency: nil)
24
25
  @host = host
25
26
  @port = port || (scheme == "http" ? 80 : 443)
26
27
  @timeout = timeout
@@ -32,7 +33,7 @@ module RangeScan
32
33
  @ssl_context = OpenSSL::SSL::SSLContext.new
33
34
  @ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE unless verify_ssl
34
35
 
35
- @processor_count ||= Etc.nprocessors
36
+ @max_concurrency = max_concurrency || Etc.nprocessors * 2
36
37
  end
37
38
 
38
39
  def url_for(ipv4)
@@ -45,7 +46,7 @@ module RangeScan
45
46
  results = []
46
47
  Async do
47
48
  barrier = Async::Barrier.new
48
- semaphore = Async::Semaphore.new(processor_count, parent: barrier)
49
+ semaphore = Async::Semaphore.new(max_concurrency, parent: barrier)
49
50
 
50
51
  ipv4s.each do |ipv4|
51
52
  semaphore.async do
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RangeScan
4
- VERSION = "0.1.4"
4
+ VERSION = "0.2.0"
5
5
  end
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency "glint", "~> 0.1"
31
31
  spec.add_development_dependency "rake", "~> 13.0"
32
32
  spec.add_development_dependency "rspec", "~> 3.9"
33
- spec.add_development_dependency "webmock", "~> 3.8"
33
+ spec.add_development_dependency "webmock", "~> 3.9"
34
34
 
35
35
  spec.add_dependency "async", "~> 1.26"
36
36
  spec.add_dependency "async-http", "~> 0.52"
@@ -0,0 +1,5 @@
1
+ {
2
+ "extends": [
3
+ "config:base"
4
+ ]
5
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rangescan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manabu Niseki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-11 00:00:00.000000000 Z
11
+ date: 2020-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '3.8'
89
+ version: '3.9'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '3.8'
96
+ version: '3.9'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: async
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -158,6 +158,7 @@ executables:
158
158
  extensions: []
159
159
  extra_rdoc_files: []
160
160
  files:
161
+ - ".deepsource.toml"
161
162
  - ".gitignore"
162
163
  - ".rspec"
163
164
  - ".travis.yml"
@@ -177,6 +178,7 @@ files:
177
178
  - lib/rangescan/utils.rb
178
179
  - lib/rangescan/version.rb
179
180
  - rangescan.gemspec
181
+ - renovate.json
180
182
  homepage: https://github.com/ninoseki/rangescan
181
183
  licenses:
182
184
  - MIT