Skip to content

Commit 07309d4

Browse files
author
Grzegorz Siewruk
committed
adjusting to gmp 20
1 parent fceccc6 commit 07309d4

File tree

1 file changed

+98
-30
lines changed

1 file changed

+98
-30
lines changed

src/main/java/pl/orange/bst/mixer/openvas/OpenVasClient.java

Lines changed: 98 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -66,43 +66,111 @@ public String taskStatus(RestRequestBody body) throws JAXBException, SAXExceptio
6666
public ReportXml getReport(RestRequestBody body) throws JAXBException, SAXException, IOException, ParserConfigurationException {
6767
return getReportResponse(body.getUser(), body.getParams());
6868
}
69-
7069

71-
private ReportXml getReportResponse(User user, HashMap<String, String> params) throws JAXBException, SAXException, IOException, ParserConfigurationException {
72-
ProcessBuilder pb = new ProcessBuilder("bash", "-c", buildCommandPrefix(user) + "'"+xob.buildGetReport(user, params)+"'");
70+
71+
/**
72+
* Version 11
73+
*/
74+
private List<Vuln> loadVulns(User user, HashMap<String, String> params, int start, List<Vuln> vulns) throws JAXBException, SAXException, IOException, ParserConfigurationException {
75+
ProcessBuilder pb = new ProcessBuilder("bash", "-c", "gvm-cli --timeout 600 socket --socketpath " + socket + " --xml '" + xob.buildGetResult(user, params, start) + "'");
7376
String output = IOUtils.toString(pb.start().getInputStream());
7477
Document doc = DocumentBuilderFactory.newInstance()
75-
.newDocumentBuilder()
76-
.parse(new InputSource(new StringReader(output)));
77-
Element reportNodeResponse = (Element) doc.getElementsByTagName("get_reports_response").item(0);
78-
Element reportNode = (Element) reportNodeResponse.getElementsByTagName("report").item(0);
79-
Element reportNode2 = (Element) reportNode.getElementsByTagName("report").item(0);
80-
Element results = (Element) reportNode2.getElementsByTagName("results").item(0);
78+
.newDocumentBuilder()
79+
.parse(new InputSource(new StringReader(output)));
80+
Element results = (Element) doc.getElementsByTagName("get_results_response").item(0);
81+
Element count = (Element) doc.getElementsByTagName("result_count").item(0);
82+
int resultsCount = Integer.parseInt(count.getElementsByTagName("filtered").item(0).getTextContent());
83+
log.info("Loading vulns for page {} and reportid: {}, result count {}", start, params.get(ConstantStrings.REPORT_ID), resultsCount);
84+
8185
NodeList vulnNode = results.getElementsByTagName("result");
82-
List<Vuln> vulns = new ArrayList<>();
83-
8486
if (vulnNode != null) {
85-
int length = vulnNode.getLength();
86-
for (int i = 0; i < length; i++) {
87-
if (vulnNode.item(i).getNodeType() == Node.ELEMENT_NODE) {
88-
Element el = (Element) vulnNode.item(i);
89-
try {
90-
Vuln v = new Vuln();
91-
v.setName(el.getElementsByTagName("name").item(0).getTextContent());
92-
v.setHost(el.getElementsByTagName("host").item(0).getFirstChild().getTextContent());
93-
v.setDesc(el.getElementsByTagName("description").item(0).getTextContent());
94-
v.setPort(el.getElementsByTagName("port").item(0).getTextContent());
95-
v.setThreat(el.getElementsByTagName("threat").item(0).getTextContent());
96-
vulns.add(v);
97-
} catch (NullPointerException n) {
98-
log.warn("Something is wrong with one of the results, nullpoitner returned");
99-
}
100-
}
101-
}
102-
}
103-
87+
int length = vulnNode.getLength();
88+
for (int i = 0; i < length; i++) {
89+
if (vulnNode.item(i).getNodeType() == Node.ELEMENT_NODE) {
90+
Element el = (Element) vulnNode.item(i);
91+
try {
92+
Vuln v = new Vuln();
93+
v.setName(el.getElementsByTagName("name").item(0).getTextContent());
94+
v.setHost(el.getElementsByTagName("host").item(0).getFirstChild().getTextContent());
95+
v.setDesc(el.getElementsByTagName("description").item(0).getTextContent());
96+
v.setPort(el.getElementsByTagName("port").item(0).getTextContent());
97+
v.setThreat(getThreat(el.getElementsByTagName("severity").item(0).getTextContent()));
98+
vulns.add(v);
99+
} catch (NullPointerException n) {
100+
//n.printStackTrace();
101+
log.info("Something is wrong with one of the results, nullpoitner returned");
102+
}
103+
}
104+
}
105+
}
106+
log.info("Vunlns contains {} records", vulns.size());
107+
if (((start * 1000) + 1000) < resultsCount){
108+
start++;
109+
vulns.addAll(loadVulns(user, params,start, vulns));
110+
}
111+
112+
return vulns;
113+
}
114+
115+
private String getThreat(String severity) {
116+
double sev = Double.parseDouble(severity);
117+
if (sev == 0.0){
118+
return "Info";
119+
} else if (sev <=4.0){
120+
return "Low";
121+
} else if (sev <=6.0) {
122+
return "Medium";
123+
} else if (sev <=8.0){
124+
return "High";
125+
} else {
126+
return "Critical";
127+
}
128+
}
129+
130+
/**
131+
* Version 9
132+
*/
133+
134+
private ReportXml getReportResponse(User user, HashMap<String, String> params) throws JAXBException, SAXException, IOException, ParserConfigurationException {
135+
List<Vuln> vulns = new ArrayList<>();
136+
try {
137+
ProcessBuilder pb = new ProcessBuilder("bash", "-c", "gvm-cli --timeout 600 socket --socketpath " + socket + " --xml '" + xob.buildGetReport(user, params) + "'");
138+
String output = IOUtils.toString(pb.start().getInputStream());
139+
Document doc = DocumentBuilderFactory.newInstance()
140+
.newDocumentBuilder()
141+
.parse(new InputSource(new StringReader(output)));
142+
Element reportNodeResponse = (Element) doc.getElementsByTagName("get_reports_response").item(0);
143+
Element reportNode = (Element) reportNodeResponse.getElementsByTagName("report").item(0);
144+
Element reportNode2 = (Element) reportNode.getElementsByTagName("report").item(0);
145+
Element results = (Element) reportNode2.getElementsByTagName("results").item(0);
146+
NodeList vulnNode = results.getElementsByTagName("result");
147+
148+
149+
if (vulnNode != null) {
150+
int length = vulnNode.getLength();
151+
for (int i = 0; i < length; i++) {
152+
if (vulnNode.item(i).getNodeType() == Node.ELEMENT_NODE) {
153+
Element el = (Element) vulnNode.item(i);
154+
try {
155+
Vuln v = new Vuln();
156+
v.setName(el.getElementsByTagName("name").item(0).getTextContent());
157+
v.setHost(el.getElementsByTagName("host").item(0).getFirstChild().getTextContent());
158+
v.setDesc(el.getElementsByTagName("description").item(0).getTextContent());
159+
v.setPort(el.getElementsByTagName("port").item(0).getTextContent());
160+
v.setThreat(el.getElementsByTagName("threat").item(0).getTextContent());
161+
vulns.add(v);
162+
} catch (NullPointerException n) {
163+
log.warn("Something is wrong with one of the results, nullpoitner returned");
164+
}
165+
}
166+
}
167+
}
168+
} catch (NullPointerException e){
169+
log.warn("No results");
170+
}
104171
return new ReportXml(vulns);
105172
}
173+
106174
private String getTaskStatusResponse(User user, HashMap<String, String> params) throws JAXBException, SAXException, IOException, ParserConfigurationException {
107175
ProcessBuilder pb = new ProcessBuilder("bash", "-c", buildCommandPrefix(user) + "'"+xob.buildGetTask(user, params)+"'");
108176
String output = IOUtils.toString(pb.start().getInputStream());

0 commit comments

Comments
 (0)