tenable-ruby 0.3.7 → 0.4.2

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: 90bf72ec8733ce3471adcd53f81588c7348ecb76c10fe0da8a856cc8972187db
4
- data.tar.gz: cd326db62ee9cd954721e2b1cbc4d11f64fb23aedf9a46e2d96cb568e638dd97
3
+ metadata.gz: a307cd9672be72bc72d8aeee16cf07083250883bd6bb26c38a7e2a6344162b66
4
+ data.tar.gz: b415f2321cc7d6e14bb1ec621b33093424c05050fcb8da747beb10f554f236bd
5
5
  SHA512:
6
- metadata.gz: 1402475f0de219ab2d654570a8de243bacb2040817baa9e36f21a24d0f8268703dc23df63d011c3db6aee1cf812a990d3f444362ff526431c9b0249837abdb94
7
- data.tar.gz: 3cd169742abb76e759107f33d2511396ecd9dd05c934062b1519e75108e56332aa87e656213139e8bd1455464280a1e9ccd83dfc813b80d0911b8f923dfedd43
6
+ metadata.gz: 6ef0ab799275410df467d988583b0dcb8d777aaf018806dd46eac988f0e93b0e1151f9fb18e2c313cf3617b0fb4bc656949c26c572a72aab6b36d87444798881
7
+ data.tar.gz: a5f78981f65993467351de830a3e1c76b85477e3efa049746078e78405c06b40c65dd15d7a804340ca0f1dd6d2a5c8b544ce87ad796cce3c688818703b2fcaca
@@ -1,6 +1,12 @@
1
1
  module TenableRuby
2
2
  module Error
3
3
  class TenableError < StandardError
4
+ attr_reader :response
5
+
6
+ def initialize(message=nil, response: nil)
7
+ @response = response
8
+ super(message)
9
+ end
4
10
  end
5
11
  end
6
12
  end
@@ -307,6 +307,14 @@ module TenableRuby
307
307
  http_put(options)
308
308
  end
309
309
 
310
+ # Returns details of the specified asset.
311
+ #
312
+ # Reference:
313
+ # https://developer.tenable.com/reference#assets-asset-info
314
+ def asset_info(asset_uuid)
315
+ http_get(:uri => "/assets/#{asset_uuid}", :fields => header)
316
+ end
317
+
310
318
  # Creates a scan
311
319
  #
312
320
  # Reference:
@@ -410,6 +418,15 @@ module TenableRuby
410
418
  http_get(:uri => uri, :fields => header)
411
419
  end
412
420
 
421
+ # Returns the output for a specified plugin.
422
+ #
423
+ # Reference:
424
+ # https://developer.tenable.com/reference#scans-plugin-output
425
+ def scans_plugin_output(scan_id, host_id, plugin_id)
426
+ uri = "/scans/#{scan_id}/hosts/#{host_id}/plugins/#{plugin_id}"
427
+ http_get(:uri => uri, :fields => header)
428
+ end
429
+
413
430
  # Download an exported scan
414
431
  #
415
432
  # Reference:
@@ -549,33 +566,15 @@ module TenableRuby
549
566
  scan_create(template_uuid, settings)
550
567
  end
551
568
 
552
- # Returns scan status by performing a 'scan_details' API call
569
+ # Returns the latest status for a scan.
570
+ #
571
+ # Reference: https://developer.tenable.com/reference#scans-get-latest-status
553
572
  def scan_status(scan_id)
554
- details = scan_details(scan_id)
555
- if details.nil?
556
- raise TenableRuby::Error::TenableError, "Get scan_details returned nil"
557
- end
558
- if not details['error'].nil?
559
- raise TenableRuby::Error::TenableError, "Get scan_details returned the following error: #{details['error']}"
560
- end
561
- details['info']['status']
562
- end
563
-
564
- # Returns the status of the latest history object of a scan by performing a 'scan_details' API call.
565
- # Note this is currently updated more frequently than the scan status in the tenable.io API
566
- def scan_latest_history_status(scan_id)
567
- details = scan_details(scan_id)
568
- if details.nil?
569
- raise TenableRuby::Error::TenableError, "Get scan_details returned nil"
570
- end
571
- if not details['error'].nil?
572
- raise TenableRuby::Error::TenableError, "Get scan_details returned the following error: #{details['error']}"
573
- end
574
- history = details['history']
575
- if history.nil? or history.length == 0
576
- raise TenableRuby::Error::TenableError, "Get scan_details returned empty history object"
573
+ response = http_get(:uri => "/scans/#{scan_id}/latest-status", :fields => header)
574
+ if response.is_a?(Hash) and response.has_key?('status')
575
+ response['status']
577
576
  else
578
- details['history'].last['status']
577
+ raise TenableRuby::Error::TenableError, "Tenable.io did not return a valid status response"
579
578
  end
580
579
  end
581
580
 
@@ -698,6 +697,48 @@ module TenableRuby
698
697
  http_get(:uri => "/container-security/api/v1/reports/by_image_digest?image_digest=#{image_digest}", :fields => header)
699
698
  end
700
699
 
700
+ # Creates a new target group for the current user.
701
+ #
702
+ # Reference:
703
+ # https://developer.tenable.com/reference#target-groups-create
704
+ def create_target_group(name, members, acls: [])
705
+ http_post(:uri => "/target-groups", :fields => header,
706
+ :body => {:name => name, :members => members, :acls => alcs})
707
+ end
708
+
709
+ # Returns the current target groups.
710
+ #
711
+ # Reference:
712
+ # https://developer.tenable.com/reference#target-groups-list
713
+ def list_target_groups
714
+ http_get(:uri => "/target-groups", :fields => header)
715
+ end
716
+
717
+ # Returns details for the specified target group.
718
+ #
719
+ # Reference:
720
+ # https://developer.tenable.com/reference#target-groups-details
721
+ def get_target_group(group_id)
722
+ http_get(:uri => "/target-groups/#{group_id}", :fields => header)
723
+ end
724
+
725
+ # Updates a target group.
726
+ #
727
+ # Reference:
728
+ # https://developer.tenable.com/reference#target-groups-edit
729
+ def update_target_group(group_id:, name:, members:, acls: nil)
730
+ http_put(:uri => "/target-groups/#{group_id}", :fields => header,
731
+ :body => {:name => name, :members => members, :acls => acls})
732
+ end
733
+
734
+ # Deletes a target group.
735
+ #
736
+ # Reference:
737
+ # https://developer.tenable.com/reference#target-groups-delete
738
+ def delete_target_group(group_id)
739
+ http_delete(:uri => "/target-groups/#{group_id}", :fields => header)
740
+ end
741
+
701
742
  private
702
743
 
703
744
  # Perform HTTP put method with uri, data and fields
@@ -886,7 +927,7 @@ module TenableRuby
886
927
  end
887
928
 
888
929
  if response.code.to_s != "200"
889
- raise TenableRuby::Error::TenableError,
930
+ raise TenableRuby::Error::TenableError.new(response: response),
890
931
  "Tenable API request '#{opts[:uri]}' responded with response code #{response.code}"
891
932
  end
892
933
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tenable-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Craston
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-15 00:00:00.000000000 Z
11
+ date: 2020-06-09 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |-
14
14
  Ruby library for communicating with the tenable.io API.
@@ -25,7 +25,7 @@ homepage: https://gitlab.com/intruder/tenable-ruby
25
25
  licenses:
26
26
  - MIT
27
27
  metadata: {}
28
- post_install_message:
28
+ post_install_message:
29
29
  rdoc_options: []
30
30
  require_paths:
31
31
  - lib
@@ -40,8 +40,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  requirements: []
43
- rubygems_version: 3.0.4
44
- signing_key:
43
+ rubygems_version: 3.0.3
44
+ signing_key:
45
45
  specification_version: 4
46
46
  summary: Ruby library for communicating with the tenable.io API
47
47
  test_files: []