Nessus6 0.1.2 → 0.1.3

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
  SHA1:
3
- metadata.gz: 45de2929582d290d256e02d1e7ca7b8cd91cd559
4
- data.tar.gz: ef441435d1ef84096b44319284fae90e6ee6dbec
3
+ metadata.gz: 8ea57398554fa50d66e69cbd4f764fdfdf70800f
4
+ data.tar.gz: 59fbbc502baedf879a692a4413433bdccbf390de
5
5
  SHA512:
6
- metadata.gz: 07ad4b0de59890b92c5048c60743aed6c48c932d6a12f7b69cb5d10df72ce1296ccd49a1479d059e1b1df2972f5ded92b86ac1cfd1145d85e85d69a3391466ea
7
- data.tar.gz: 23a8777b7b42bafdc63c5bf2e67fbc208b99182801945cdf158ce6ce40fc8203a92a55f954c673f17672c483013addb7377f29390e9ad41fc6014031b9972322
6
+ metadata.gz: 311e47c8a8e10bca9fac1cf82f60eb3196b24c4e7b5224b848406006fbc4b7aef0f8f074605c33a4e5fefceb3d51d1e3e7df49f562a1e34199a5222df62b279b
7
+ data.tar.gz: 9612248b7da4daffbb06bbd205656a05f38b5f0f86d0fe42b998a847f1e8ddc42588138e6513f95b8639192a8383cea3e95554b1f1feb0753c594ead2058c55b
@@ -4,27 +4,27 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'Nessus6/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "Nessus6"
7
+ spec.name = 'Nessus6'
8
8
  spec.version = Nessus6::VERSION
9
- spec.authors = ["Kevin Kirsche"]
10
- spec.email = ["kev.kirsche@gmail.com"]
9
+ spec.authors = ['Kevin Kirsche']
10
+ spec.email = ['kev.kirsche@gmail.com']
11
11
  spec.license = 'Apache-2.0'
12
12
 
13
13
  spec.summary = %q{[Under Construction] Nessus 6 API Gem}
14
14
  spec.description = %q{Gem for interacting with the Tenable Nessus 6 REST API.}
15
- spec.homepage = "https://github.com/kkirsche/Nessus6"
15
+ spec.homepage = 'https://github.com/kkirsche/Nessus6'
16
16
 
17
17
  spec.required_ruby_version = '>= 2.0.0'
18
18
 
19
19
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
- spec.bindir = "exe"
20
+ spec.bindir = 'exe'
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
- spec.require_paths = ["lib"]
22
+ spec.require_paths = ['lib']
23
23
 
24
- spec.add_development_dependency "bundler", "~> 1.9"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_development_dependency "minitest", "~> 5.8"
27
- spec.add_development_dependency "yard", "~> 0.8"
24
+ spec.add_development_dependency 'bundler', '~> 1.7'
25
+ spec.add_development_dependency 'rake', '~> 10.0'
26
+ spec.add_development_dependency 'minitest', '~> 5.8'
27
+ spec.add_development_dependency 'yard', '~> 0.8'
28
28
  spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.4'
29
- spec.add_runtime_dependency "hurley", "~> 0.1"
29
+ spec.add_runtime_dependency 'hurley', '~> 0.1'
30
30
  end
@@ -1,11 +1,3 @@
1
- require 'json'
2
- require 'Nessus6/errors/bad_request' # 400
3
- require 'Nessus6/errors/forbidden' # 403
4
- require 'Nessus6/errors/not_found' # 404
5
- require 'Nessus6/errors/conflict' # 409
6
- require 'Nessus6/errors/internal_server_error' # 500
7
- require 'Nessus6/errors/unknown' # Unknown Error Code
8
-
9
1
  module Nessus6
10
2
  # The Editor class is for interacting with Nessus6 templates. Templates are
11
3
  # used to create scans or policies with predefined parameters.
@@ -1,8 +1,3 @@
1
- require 'json'
2
- require 'hurley'
3
- require 'Nessus6/errors/internal_server_error'
4
- require 'Nessus6/errors/unknown'
5
-
6
1
  module Nessus6
7
2
  # The File class is for uploading files to Nessus.
8
3
  # https://localhost:8834/api#/resources/file
@@ -1,10 +1,3 @@
1
- require 'json'
2
- require 'Nessus6/errors/internal_server_error'
3
- require 'Nessus6/errors/forbidden'
4
- require 'Nessus6/errors/bad_request'
5
- require 'Nessus6/errors/not_found'
6
- require 'Nessus6/errors/unknown'
7
-
8
1
  module Nessus6
9
2
  # The Folders class is for interacting with Nessus6 folders. Folders are used
10
3
  # to sort and organize a user's scan results.
@@ -1,10 +1,3 @@
1
- require 'json'
2
- require 'Nessus6/errors/internal_server_error' # 500
3
- require 'Nessus6/errors/forbidden' # 403
4
- require 'Nessus6/errors/bad_request' # 400
5
- require 'Nessus6/errors/not_found' # 404
6
- require 'Nessus6/errors/unknown'
7
-
8
1
  module Nessus6
9
2
  # The Groups class is for interacting with Nessus6 user groups. Groups are
10
3
  # utilized to make sharing easier.
@@ -1,8 +1,3 @@
1
- require 'json'
2
- require 'Nessus6/errors/forbidden' # 403
3
- require 'Nessus6/errors/not_found' # 404
4
- require 'Nessus6/errors/unknown'
5
-
6
1
  module Nessus6
7
2
  # The Permissions class is for interacting with Nessus6 user permissions.
8
3
  # Permissions are used to provide access rights to a given object.
@@ -0,0 +1,53 @@
1
+ module Nessus6
2
+ # The Plugin class is for interacting with Nessus6 plugins.
3
+ # https://localhost:8834/api#/resources/plugins
4
+ class Plugin
5
+ include Nessus6::Verification
6
+
7
+ public
8
+
9
+ def initialize(client)
10
+ @client = client
11
+ end
12
+
13
+ # Returns the list of plugin families. This request requires standard user
14
+ # permissions.
15
+ #
16
+ # @return [Hash]
17
+ def families
18
+ response = @client.get('plugins/families')
19
+ verify response,
20
+ forbidden: 'You do not have permission to view plugin families',
21
+ internal_server_error: 'Server failed to retrieve the plugin '\
22
+ 'family list.'
23
+ end
24
+
25
+ # Returns the list of plugins in a family. This request requires standard
26
+ # user permissions.
27
+ #
28
+ # @param plugin_family_id [String] The id of the family to lookup.
29
+ # @return [Hash]
30
+ def family_details(plugin_family_id)
31
+ response = @client.get("plugins/families/#{plugin_family_id}")
32
+ verify response,
33
+ forbidden: 'You do not have permission to view the plugin family',
34
+ not_found: 'Plugin family not found',
35
+ internal_server_error: 'Server failed to retrieve the plugin '\
36
+ 'family details.'
37
+ end
38
+
39
+ # Returns the details for a given plugin. This request requires standard
40
+ # user permissions.
41
+ #
42
+ # @param plugin_id [String] The id of the plugin.
43
+ # @return [Hash]
44
+ def plugin_details(plugin_id)
45
+ response = @client.get("plugins/plugin/#{plugin_id}")
46
+ verify response,
47
+ forbidden: 'You do not have permission to view the plugin',
48
+ not_found: 'Plugin not found',
49
+ internal_server_error: 'Server failed to retrieve the plugin '\
50
+ 'details.'
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,92 @@
1
+ module Nessus6
2
+ # The Plugin class is for interacting with Nessus6 plugins.
3
+ # https://localhost:8834/api#/resources/plugins
4
+ class PluginRules
5
+ include Nessus6::Verification
6
+
7
+ public
8
+
9
+ def initialize(client)
10
+ @client = client
11
+ end
12
+
13
+ # Returns the list of plugin families. This request requires standard user
14
+ # permissions.
15
+ #
16
+ # @return [Hash]
17
+ def list
18
+ response = @client.get('plugins-rules')
19
+ verify response,
20
+ forbidden: 'You do not have permission to view plugin rules list',
21
+ internal_server_error: 'Server failed to create the group'
22
+ end
23
+
24
+ # Returns the list of plugins in a family. This request requires standard
25
+ # user permissions.
26
+ #
27
+ # @param plugin_id [String, Fixnum] The id of the plugin to apply the rule
28
+ # to.
29
+ # @param type [String] The new severity to apply (recast_critical,
30
+ # recast_high, recast_medium, recast_low, recast_info, exclude).
31
+ # @param host [String] The host to apply the rule to.
32
+ # @param date [String] The expiration date of the plugin rule
33
+ # @return [Hash]
34
+ def create(plugin_id, type, host, date = nil)
35
+ if date.nil?
36
+ response = @client.post('plugin-rules', plugin_id: plugin_id,
37
+ type: type,
38
+ host: host)
39
+ else
40
+ response = @client.post('plugin-rules', plugin_id: plugin_id,
41
+ type: type,
42
+ host: host,
43
+ date: date)
44
+ end
45
+ verify response,
46
+ bad_request: 'An argument is missing or invalid',
47
+ forbidden: 'You do not have permission to create this plugin rule',
48
+ not_found: 'Plugin family not found',
49
+ internal_server_error: 'Server failed to create the plugin rule'
50
+ end
51
+
52
+ # Deletes a plugin rule. This request requires read only user permissions.
53
+ #
54
+ # @param rule_id [String, Fixnum] The id of the rule to delete.
55
+ # @return [Hash]
56
+ def delete(rule_id)
57
+ response = @client.delete("plugin-rules/#{rule_id}")
58
+ verify response,
59
+ forbidden: 'You do not have permission to delete the rule.',
60
+ not_found: 'Rule with that ID could not be found',
61
+ internal_server_error: 'Server failed to create the group'
62
+ end
63
+
64
+ # Modify a plugin rule for the current user. This request requires read only
65
+ # user permissions.
66
+ #
67
+ # @param rule_id [String, Fixnum] The id of the rule to delete.
68
+ # @param plugin_id [String, Fixnum] The id of the plugin to apply the rule
69
+ # to.
70
+ # @param type [String] The new severity to apply (recast_critical,
71
+ # recast_high, recast_medium, recast_low, recast_info, exclude).
72
+ # @param host [String] The host to apply the rule to.
73
+ # @param date [String] The expiration date of the plugin rule
74
+ # @return [Hash]
75
+ def edit(rule_id, plugin_id, type, host, date = nil)
76
+ if date.nil?
77
+ response = @client.put("plugin-rules/#{rule_id}", plugin_id: plugin_id,
78
+ type: type,
79
+ host: host)
80
+ else
81
+ response = @client.put("plugin-rules/#{rule_id}", plugin_id: plugin_id,
82
+ type: type,
83
+ host: host,
84
+ date: date)
85
+ end
86
+ verify response,
87
+ forbidden: 'You do not have permission to delete the rule.',
88
+ not_found: 'Rule with that ID could not be found',
89
+ internal_server_error: 'Server failed to create the group'
90
+ end
91
+ end
92
+ end
@@ -1,10 +1,3 @@
1
- require 'json'
2
- require 'Nessus6/errors/forbidden' # 403
3
- require 'Nessus6/errors/not_found' # 404
4
- require 'Nessus6/errors/conflict' # 409
5
- require 'Nessus6/errors/internal_server_error' # 500
6
- require 'Nessus6/errors/unknown'
7
-
8
1
  module Nessus6
9
2
  # The Scans class is for interacting with Nessus6 scans.
10
3
  # https://localhost:8834/api#/resources/scans
@@ -0,0 +1,33 @@
1
+ module Nessus6
2
+ # The Scanner class provides details about the available scanners
3
+ # https://localhost:8834/api#/resources/server
4
+ class Scanner
5
+ include Nessus6::Verification
6
+
7
+ public
8
+
9
+ # Returns the scanner list. This request requires administrator user
10
+ # permissions.
11
+ #
12
+ # @return [Hash]
13
+ def list
14
+ response = @client.get('scanners')
15
+ verify response,
16
+ forbidden: 'You do not have permission to view the list',
17
+ internal_server_error: 'Server failed to retrieve properties'
18
+ end
19
+
20
+ # Returns the agent list for the given scanner. This request requires
21
+ # administrator user permissions.
22
+ #
23
+ # @param scanner_id [String, Fixnum] The id of the scanner to query for
24
+ # agents.
25
+ # @return [Hash]
26
+ def list_agents(scanner_id)
27
+ response = @client.get("scanners/#{scanner_id}/agents")
28
+ verify response,
29
+ forbidden: 'You do not have permission to view the list of agents',
30
+ internal_server_error: 'Server failed to retrieve agent list'
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,27 @@
1
+ module Nessus6
2
+ # The Server class returns information about the Nessus Server itself
3
+ # https://localhost:8834/api#/resources/server
4
+ class Server
5
+ include Nessus6::Verification
6
+
7
+ public
8
+
9
+ # Returns the Nessus server version and other properties.
10
+ #
11
+ # @return [Hash]
12
+ def properties
13
+ response = @client.get('server/properties')
14
+ verify response,
15
+ internal_server_error: 'Server failed to retrieve properties'
16
+ end
17
+
18
+ # Returns the Nessus server status.
19
+ #
20
+ # @return [Hash]
21
+ def status
22
+ response = @client.get('server/status')
23
+ verify response,
24
+ internal_server_error: 'Server failed to retrieve status'
25
+ end
26
+ end
27
+ end
@@ -1,10 +1,3 @@
1
- require 'json'
2
- require 'Nessus6/errors/bad_request'
3
- require 'Nessus6/errors/forbidden'
4
- require 'Nessus6/errors/internal_server_error'
5
- require 'Nessus6/errors/unauthorized'
6
- require 'Nessus6/errors/unknown'
7
-
8
1
  module Nessus6
9
2
  # The Session class is used to create a session with Nessus6. User sessions
10
3
  # allow us to interact throughout our applications.
@@ -1,11 +1,3 @@
1
- require 'json'
2
- require 'Nessus6/errors/bad_request'
3
- require 'Nessus6/errors/conflict'
4
- require 'Nessus6/errors/forbidden'
5
- require 'Nessus6/errors/internal_server_error'
6
- require 'Nessus6/errors/not_found'
7
- require 'Nessus6/errors/unknown'
8
-
9
1
  module Nessus6
10
2
  # The Users class allows us to interact with Nessus 6 users.
11
3
  # Users can utilize Nessus based on their given role.
@@ -1,3 +1,12 @@
1
+ require 'json'
2
+ require 'nessus6/errors/bad_request'
3
+ require 'nessus6/errors/conflict'
4
+ require 'nessus6/errors/forbidden'
5
+ require 'nessus6/errors/internal_server_error'
6
+ require 'nessus6/errors/not_found'
7
+ require 'nessus6/errors/unauthorized'
8
+ require 'nessus6/errors/unknown'
9
+
1
10
  module Nessus6
2
11
  # The verification class allows methods to verify responses from Nessus
3
12
  module Verification
@@ -1,3 +1,3 @@
1
1
  module Nessus6
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Nessus6
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Kirsche
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-08-20 00:00:00.000000000 Z
11
+ date: 2015-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.9'
19
+ version: '1.7'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.9'
26
+ version: '1.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -124,7 +124,11 @@ files:
124
124
  - lib/Nessus6/folder.rb
125
125
  - lib/Nessus6/group.rb
126
126
  - lib/Nessus6/permission.rb
127
+ - lib/Nessus6/plugin.rb
128
+ - lib/Nessus6/plugin_rules.rb
127
129
  - lib/Nessus6/scan.rb
130
+ - lib/Nessus6/scanner.rb
131
+ - lib/Nessus6/server.rb
128
132
  - lib/Nessus6/session.rb
129
133
  - lib/Nessus6/user.rb
130
134
  - lib/Nessus6/verification.rb
@@ -149,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
153
  version: '0'
150
154
  requirements: []
151
155
  rubyforge_project:
152
- rubygems_version: 2.4.6
156
+ rubygems_version: 2.4.5.1
153
157
  signing_key:
154
158
  specification_version: 4
155
159
  summary: "[Under Construction] Nessus 6 API Gem"