Skip to content

Commit 2744db4

Browse files
author
root
committed
Add nessus_scan_export and nessus_scan_export_status methods
1 parent 23af5f8 commit 2744db4

File tree

2 files changed

+311
-161
lines changed

2 files changed

+311
-161
lines changed

lib/nessus/nessus-xmlrpc.rb

Lines changed: 54 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def get_server_properties
5252
return resp
5353
end
5454

55-
def user_add(username,password,permissions,type)
55+
def user_add(username, password, permissions, type)
5656
payload = {
5757
:username => username,
5858
:password => password,
@@ -62,15 +62,15 @@ def user_add(username,password,permissions,type)
6262
}
6363
request = Net::HTTP::Post.new("/users")
6464
request.set_form_data(payload)
65-
request.add_field("X-Cookie",@token)
65+
request.add_field("X-Cookie", @token)
6666
resp = @connection.request(request)
6767
resp = JSON.parse(resp.body)
6868
return resp
6969
end
7070

7171
def user_delete(user_id)
7272
request = Net::HTTP::Delete.new("/users/#{user_id}")
73-
request.add_field("X-Cookie",@token)
73+
request.add_field("X-Cookie", @token)
7474
resp = @connection.request(request)
7575
return resp.code
7676
end
@@ -82,77 +82,77 @@ def user_chpasswd(user_id, password)
8282
}
8383
request = Net::HTTP::Put.new("/users/#{user_id}/chpasswd")
8484
request.set_form_data(payload)
85-
request.add_field("X-Cookie",@token)
85+
request.add_field("X-Cookie", @token)
8686
resp = @connection.request(request)
8787
return resp.code
8888
end
8989

9090
def user_logout
9191
request = Net::HTTP::Delete.new("/session")
92-
request.add_field("X-Cookie",@token)
92+
request.add_field("X-Cookie", @token)
9393
resp = @connection.request(request)
9494
return resp.code
9595
end
9696

9797
def list_policies
9898
request = Net::HTTP::Get.new("/policies")
99-
request.add_field("X-Cookie",@token)
99+
request.add_field("X-Cookie", @token)
100100
resp = @connection.request(request)
101101
resp = JSON.parse(resp.body)
102102
return resp
103103
end
104104

105105
def list_users
106106
request = Net::HTTP::Get.new("/users")
107-
request.add_field("X-Cookie",@token)
107+
request.add_field("X-Cookie", @token)
108108
resp = @connection.request(request)
109109
resp = JSON.parse(resp.body)
110110
return resp
111111
end
112112

113113
def list_folders
114114
request = Net::HTTP::Get.new("/folders")
115-
request.add_field("X-Cookie",@token)
115+
request.add_field("X-Cookie", @token)
116116
resp = @connection.request(request)
117117
resp = JSON.parse(resp.body)
118118
return resp
119119
end
120120

121121
def list_scanners
122122
request = Net::HTTP::Get.new("/scanners")
123-
request.add_field("X-Cookie",@token)
123+
request.add_field("X-Cookie", @token)
124124
resp = @connection.request(request)
125125
resp = JSON.parse(resp.body)
126126
return resp
127127
end
128128

129129
def list_families
130130
request = Net::HTTP::Get.new("/plugins/families")
131-
request.add_field("X-Cookie",@token)
131+
request.add_field("X-Cookie", @token)
132132
resp = @connection.request(request)
133133
resp = JSON.parse(resp.body)
134134
return resp
135135
end
136136

137137
def list_plugins(family_id)
138138
request = Net::HTTP::Get.new("/plugins/families/#{family_id}")
139-
request.add_field("X-Cookie",@token)
139+
request.add_field("X-Cookie", @token)
140140
resp = @connection.request(request)
141141
resp = JSON.parse(resp.body)
142142
return resp
143143
end
144144

145145
def plugin_details(plugin_id)
146146
request = Net::HTTP::Get.new("/plugins/plugin/#{plugin_id}")
147-
request.add_field("X-Cookie",@token)
147+
request.add_field("X-Cookie", @token)
148148
resp = @connection.request(request)
149149
resp = JSON.parse(resp.body)
150150
return resp
151151
end
152152

153153
def is_admin
154154
request = Net::HTTP::Get.new("/session")
155-
request.add_field("X-Cookie",@token)
155+
request.add_field("X-Cookie", @token)
156156
resp = @connection.request(request)
157157
resp = JSON.parse(resp.body)
158158
if resp["permissions"] == 128
@@ -164,7 +164,7 @@ def is_admin
164164

165165
def server_properties
166166
request = Net::HTTP::Get.new("/server/properties")
167-
request.add_field("X-Cookie",@token)
167+
request.add_field("X-Cookie", @token)
168168
resp = @connection.request(request)
169169
resp = JSON.parse(resp.body)
170170
return resp
@@ -182,7 +182,7 @@ def scan_create(uuid, name, description, targets)
182182
}
183183
request = Net::HTTP::Post.new("/scans")
184184
request.body = payload.to_json
185-
request.add_field("X-Cookie",@token)
185+
request.add_field("X-Cookie", @token)
186186
request["Content-Type"] = "application/json"
187187
resp = @connection.request(request)
188188
resp = JSON.parse(resp.body)
@@ -191,52 +191,85 @@ def scan_create(uuid, name, description, targets)
191191

192192
def scan_launch(scan_id)
193193
request = Net::HTTP::Post.new("/scans/#{scan_id}/launch")
194-
request.add_field("X-Cookie",@token)
194+
request.add_field("X-Cookie", @token)
195195
resp = @connection.request(request)
196196
resp = JSON.parse(resp.body)
197197
return resp
198198
end
199199

200200
def server_status
201201
request = Net::HTTP::Get.new("/server/status")
202-
request.add_field("X-Cookie",@token)
202+
request.add_field("X-Cookie", @token)
203203
resp = @connection.request(request)
204204
resp = JSON.parse(resp.body)
205205
return resp
206206
end
207207

208208
def scan_list
209209
request = Net::HTTP::Get.new("/scans")
210-
request.add_field("X-Cookie",@token)
210+
request.add_field("X-Cookie", @token)
211+
resp = @connection.request(request)
212+
resp = JSON.parse(resp.body)
213+
return resp
214+
end
215+
216+
def scan_details(scan_id)
217+
request = Net::HTTP::Get.new("/scans/#{scan_id}")
218+
request.add_field("X-Cookie", @token)
211219
resp = @connection.request(request)
212220
resp = JSON.parse(resp.body)
213221
return resp
214222
end
215223

216224
def scan_pause(scan_id)
217225
request = Net::HTTP::Post.new("/scans/#{scan_id}/pause")
218-
request.add_field("X-Cookie",@token)
226+
request.add_field("X-Cookie", @token)
219227
resp = @connection.request(request)
220228
resp = JSON.parse(resp.body)
221229
return resp
222230
end
223231

224232
def scan_resume(scan_id)
225233
request = Net::HTTP::Post.new("/scans/#{scan_id}/resume")
226-
request.add_field("X-Cookie",@token)
234+
request.add_field("X-Cookie", @token)
227235
resp = @connection.request(request)
228236
resp = JSON.parse(resp.body)
229237
return resp
230238
end
231239

232240
def scan_stop(scan_id)
233241
request = Net::HTTP::Post.new("/scans/#{scan_id}/stop")
234-
request.add_field("X-Cookie",@token)
242+
request.add_field("X-Cookie", @token)
235243
resp = @connection.request(request)
236244
resp = JSON.parse(resp.body)
237245
return resp
238246
end
239247

248+
def scan_export(scan_id, format)
249+
payload = {
250+
:format => format
251+
}
252+
request = Net::HTTP::Post.new("/scans/#{scan_id}/export")
253+
request.body = payload.to_json
254+
request["Content-Type"] = "application/json"
255+
request.add_field("X-Cookie", @token)
256+
resp = @connection.request(request)
257+
resp = JSON.parse(resp.body)
258+
return resp
259+
end
260+
261+
def scan_export_status(scan_id, file_id)
262+
request = Net::HTTP::Get.new("/scans/#{scan_id}/export/#{file_id}/status")
263+
request.add_field("X-Cookie", @token)
264+
resp = @connection.request(request)
265+
if resp.code == "200"
266+
return "ready"
267+
else
268+
resp = JSON.parse(resp.body)
269+
return resp
270+
end
271+
end
272+
240273
def policy_delete(policy_id)
241274
request = Net::HTTP::Delete.new("/policies/#{policy_id}")
242275
request.add_field("X-Cookie",@token)

0 commit comments

Comments
 (0)