rangescan 0.1.4 → 0.2.0

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