peplum-nmap 0.2.0 → 0.2.1

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: 43119975167b6d77c7c37a659ebe0d0ed00bc7d337d1e75c9bbf5c82734f34f9
4
- data.tar.gz: a0d173ea8eca5258bd65d4780628936cbb37d738eb1f4ac3aff6482ce5c14c19
3
+ metadata.gz: 77102d2b6c314e3b3f3585bb3d892338b81080087289b11631e2295cf4711499
4
+ data.tar.gz: cf41927ba26efe42963c4064522c3e68735f5deb3163e6067dbb863b5470daa3
5
5
  SHA512:
6
- metadata.gz: '0493a3bc95b08c909ced90634791be7ac8300d18af8b9ad3217515db3e86bc82256e4445533736acf4ed3bd88781eeb845432dc1427eeb441458cce3689779ef'
7
- data.tar.gz: c3d8f9e06a9bbe248ca916264e07c46ed668ea5b749bd015caac1c3ee7930dbb019bac5d7c31ffc8824eef2a31098c3048b8254b090f4aae2ee89eebd36a1d96
6
+ metadata.gz: ad0e5f023991b6b8c95ae46621fbb4ce55f64dabc1a6509abc6b7767571facdff926077b8e23213d5f362e38dec82f926cd97f9fc5d1a5bcb65cdacdbfd8fce8
7
+ data.tar.gz: 866b15d443a8a0b7bb33a57548fb460bff9fec8bf3b4120aee08e27730e62caf24041bcf58c464f327557a5c3d1bbd3c293a8d70114ff18996fed3d788a0b23b
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,8 +21,16 @@ 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
36
  def group( targets, chunks )
@@ -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.1"
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.1
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-24 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/