peplum-nmap 0.2.0 → 0.2.2

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: 43119975167b6d77c7c37a659ebe0d0ed00bc7d337d1e75c9bbf5c82734f34f9
4
- data.tar.gz: a0d173ea8eca5258bd65d4780628936cbb37d738eb1f4ac3aff6482ce5c14c19
3
+ metadata.gz: 909d1bf87e2c6e01c356fdd5052b04c65ab7aa0146793f879351117c717c163f
4
+ data.tar.gz: d859d987045778ad52e30253c345ac5a7e7dfd45a4e540a5a3b04d184284703c
5
5
  SHA512:
6
- metadata.gz: '0493a3bc95b08c909ced90634791be7ac8300d18af8b9ad3217515db3e86bc82256e4445533736acf4ed3bd88781eeb845432dc1427eeb441458cce3689779ef'
7
- data.tar.gz: c3d8f9e06a9bbe248ca916264e07c46ed668ea5b749bd015caac1c3ee7930dbb019bac5d7c31ffc8824eef2a31098c3048b8254b090f4aae2ee89eebd36a1d96
6
+ metadata.gz: 4a87fb1b4e7b775e6ed9039238f023754c6c9ade3252f56955d1a34081c8991f239f016983e7f3206ad8209e2f23b5cee5e58c5a1e381baa47928b0ae4448203
7
+ data.tar.gz: 50f0c401b91396fe690b9368e21b3cd97198e01d7b27aaf8a15218b32ca0f3e5144fe78d59009a0b5f99708aa5b5a3e61f4e1e50c8b5cb27e739b841568f66a0
data/examples/rest.rb CHANGED
@@ -39,6 +39,9 @@ request :post, 'instances', {
39
39
  instance_id = response_data['id']
40
40
 
41
41
  while sleep( 1 )
42
+ request :get, "instances/#{instance_id}/info/progress"
43
+ ap response_data
44
+
42
45
  # Continue looping while instance status is 'busy'.
43
46
  request :get, "instances/#{instance_id}"
44
47
  break if !response_data['busy']
data/examples/rpc.rb CHANGED
@@ -24,7 +24,10 @@ nmap.run(
24
24
  )
25
25
 
26
26
  # Waiting to complete.
27
- sleep 1 while nmap.running?
27
+ while nmap.running?
28
+ ap nmap.info.progress
29
+ sleep 1
30
+ end
28
31
 
29
32
  # Hooray!
30
33
  puts JSON.pretty_generate( nmap.generate_report.data )
@@ -21,11 +21,19 @@ module Payload
21
21
  end
22
22
 
23
23
  def run( targets, options )
24
- _run options.merge( targets: targets, output_xml: SCAN_REPORT )
25
- report_from_xml( SCAN_REPORT )
24
+ # Do it this way so we'll be able to have progress reports per scanned host.
25
+ merge( targets.map do |target|
26
+ _run options.merge( targets: target, output_xml: SCAN_REPORT )
27
+
28
+ report = report_from_xml( SCAN_REPORT )
29
+ next if !report.include?('hosts')
30
+
31
+ Nmap::Application.master.info.update report
32
+ report
33
+ end.compact )
26
34
  end
27
35
 
28
- def group( targets, chunks )
36
+ def split( targets, chunks )
29
37
  @hosts ||= self.live_hosts( targets )
30
38
  @hosts.chunk( chunks ).reject(&:empty?)
31
39
  end
@@ -45,7 +53,12 @@ module Payload
45
53
  ping: true,
46
54
  output_xml: PING_REPORT
47
55
 
48
- hosts_from_xml( PING_REPORT )
56
+ hosts = hosts_from_xml( PING_REPORT )
57
+
58
+ # Seed the progress data with the live hosts
59
+ hosts.each { |h| Services::Info.progress_data['hosts'][h] ||= {} }
60
+
61
+ hosts
49
62
  end
50
63
 
51
64
  def set_default_options( nmap )
@@ -0,0 +1,26 @@
1
+ module Peplum
2
+ class Nmap
3
+ module Services
4
+
5
+ class Info
6
+
7
+ class <<self
8
+ def progress_data
9
+ @progress_data ||= { 'hosts' => {} }
10
+ end
11
+ end
12
+
13
+ def progress
14
+ self.class.progress_data
15
+ end
16
+
17
+ def update( data )
18
+ self.class.progress_data['hosts'].merge! Payload.merge( [self.class.progress_data, data] )['hosts']
19
+ nil
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,17 @@
1
+ module Peplum
2
+ class Nmap
3
+ module Services
4
+ module RESTProxy
5
+ def self.registered( app )
6
+
7
+ app.get '/progress' do
8
+ instance_for( params[:instance] ) do |instance|
9
+ json instance.info.progress
10
+ end
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Peplum
4
4
  class Nmap
5
- VERSION = "0.2.0"
5
+ VERSION = "0.2.2"
6
6
  end
7
7
  end
data/lib/peplum/nmap.rb CHANGED
@@ -11,6 +11,13 @@ class Nmap
11
11
  class Error < Peplum::Error; end
12
12
 
13
13
  class Application < Peplum::Application
14
+
15
+ require_relative "nmap/services/info"
16
+ instance_service_for :info, Services::Info
17
+
18
+ require_relative "nmap/services/rest_proxy"
19
+ rest_service_for :info, Services::RESTProxy
20
+
14
21
  def payload
15
22
  Payload
16
23
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peplum-nmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tasos Laskos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-23 00:00:00.000000000 Z
11
+ date: 2023-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: peplum
@@ -53,6 +53,8 @@ files:
53
53
  - examples/rpc.rb
54
54
  - lib/peplum/nmap.rb
55
55
  - lib/peplum/nmap/payload.rb
56
+ - lib/peplum/nmap/services/info.rb
57
+ - lib/peplum/nmap/services/rest_proxy.rb
56
58
  - lib/peplum/nmap/version.rb
57
59
  - peplum-nmap.gemspec
58
60
  homepage: http://ecsypno.com/