1
|
|
|
from qualysapi.api_objects import Host, Scan, Report |
2
|
|
|
|
3
|
|
|
|
4
|
|
|
class FieldLists(): |
5
|
|
|
HOST = ['dns', 'id', 'ip', 'last_scan', 'netbios', 'os', 'tracking_method'] |
6
|
|
|
SCAN = ['assetgroups', 'duration', 'launch_datetime', 'option_profile', |
7
|
|
|
'processed', 'ref', 'status', 'target', |
8
|
|
|
'title', 'type', 'user_login'] |
9
|
|
|
REPORT = ['expiration_datetime', 'id', 'launch_datetime', 'output_format', |
10
|
|
|
'size', 'status', 'type', 'user_login'] |
11
|
|
|
|
12
|
|
|
|
13
|
|
|
class ResultSets(object): |
14
|
|
|
|
15
|
|
|
def selector(self, output): |
16
|
|
|
if isinstance(output, Host): |
17
|
|
|
return self.parse(output, FieldLists.HOST) |
18
|
|
|
elif isinstance(output, Scan): |
19
|
|
|
return self.parse(output, FieldLists.SCAN) |
20
|
|
|
elif isinstance(output, Report): |
21
|
|
|
return self.parse(output, FieldLists.REPORT) |
22
|
|
|
else: |
23
|
|
|
return output |
24
|
|
|
|
25
|
|
|
def formatter(self, output): |
26
|
|
|
formatted = [] |
27
|
|
|
if isinstance(output, list): |
28
|
|
|
for o in output: |
29
|
|
|
formatted.append(self.selector(o)) |
30
|
|
|
else: |
31
|
|
|
formatted = self.selector(output) |
32
|
|
|
return formatted |
33
|
|
|
|
34
|
|
|
def _getval(self, obj, field): |
35
|
|
|
return self.selector(getattr(obj, field)) |
36
|
|
|
|
37
|
|
|
def parse(self, output, field_list): |
38
|
|
|
instance_data = {field: self._getval(output, field) for field in field_list} |
39
|
|
|
return instance_data |
40
|
|
|
|