1111import javax .xml .parsers .ParserConfigurationException ;
1212
1313import org .apache .commons .io .IOUtils ;
14+ import org .apache .commons .lang3 .StringUtils ;
1415import org .slf4j .Logger ;
1516import org .slf4j .LoggerFactory ;
1617import org .springframework .beans .factory .annotation .Value ;
3334public class OpenVasClient {
3435 @ Value ("${openvasmd.socket}" )
3536 private String socket ;
37+ @ Value ("${gvm-cli.exec}" )
38+ private String gvmCli ;
3639
3740 XmlOperationBuilder xob = new XmlOperationBuilder ();
3841 private static final Logger log = LoggerFactory .getLogger (OpenVasClient .class );
@@ -98,7 +101,12 @@ private List<Vuln> loadVulns(User user, HashMap<String, String> params, int star
98101 v .setHost (el .getElementsByTagName ("host" ).item (0 ).getFirstChild ().getTextContent ());
99102 v .setDesc (el .getElementsByTagName ("description" ).item (0 ).getTextContent ());
100103 v .setPort (el .getElementsByTagName ("port" ).item (0 ).getTextContent ());
101- v .setThreat (getThreat (el .getElementsByTagName ("severity" ).item (0 ).getTextContent ()));
104+ if (StringUtils .isNumeric (el .getElementsByTagName ("severity" ).item (0 ).getTextContent ())) {
105+ v .setThreat (getThreat (el .getElementsByTagName ("severity" ).item (0 ).getTextContent ()));
106+ } else {
107+ Element severityNvt = (Element ) el .getElementsByTagName ("severity" ).item (0 );
108+ v .setThreat (getThreat (severityNvt .getElementsByTagName ("score" ).item (0 ).getTextContent ()));
109+ }
102110 vulns .add (v );
103111 } catch (NullPointerException n ) {
104112 //n.printStackTrace();
@@ -192,6 +200,8 @@ private String getTaskStatusResponse(User user, HashMap<String, String> params)
192200 private String getRunTask (User user , HashMap <String , String > params ) throws JAXBException , SAXException , IOException , ParserConfigurationException {
193201 ProcessBuilder pb = new ProcessBuilder ("bash" , "-c" , buildCommandPrefix (user ) + "'" +xob .buildStartTask (user , params )+"'" );
194202 String output = IOUtils .toString (pb .start ().getInputStream ());
203+ log .debug ("Request for starttask is {}" , buildCommandPrefix (user ) + "'" +xob .buildStartTask (user , params )+"'" );
204+ log .debug ("Output for starttask is {}" , output );
195205 Document doc = DocumentBuilderFactory .newInstance ()
196206 .newDocumentBuilder ()
197207 .parse (new InputSource (new StringReader (output )));
@@ -229,6 +239,7 @@ private String getCreateTaskResponse(User user, HashMap<String, String> params)
229239 return null ;
230240 }
231241 private String getConfigResponse (User user ) throws SAXException , IOException , ParserConfigurationException , JAXBException {
242+ log .info ("About to execute: {} {} {} '{}'" ,"bash" ,"-c" , buildCommandPrefix (user ),xob .buildGetConfig (user ) );
232243 ProcessBuilder pb = new ProcessBuilder ("bash" , "-c" , buildCommandPrefix (user ) + "'" +xob .buildGetConfig (user )+"'" );
233244 String output = IOUtils .toString (pb .start ().getInputStream ());
234245 Document doc = DocumentBuilderFactory .newInstance ()
@@ -273,6 +284,8 @@ private String getCreateTargetRespnse(User user, HashMap<String, String> params)
273284
274285 ProcessBuilder pb = new ProcessBuilder ("bash" , "-c" , buildCommandPrefix (user ) + "'" +xob .buildCreateTarget (user , params )+"'" );
275286 String output = IOUtils .toString (pb .start ().getInputStream ());
287+ log .debug ("Request for createtarget is {}" , buildCommandPrefix (user ) + "'" +xob .buildCreateTarget (user , params )+"'" );
288+ log .debug ("Output for createtarget is {}" , output );
276289 Document doc = DocumentBuilderFactory .newInstance ()
277290 .newDocumentBuilder ()
278291 .parse (new InputSource (new StringReader (output )));
@@ -285,6 +298,6 @@ private String getCreateTargetRespnse(User user, HashMap<String, String> params)
285298 }
286299
287300 public String buildCommandPrefix (User user ){
288- return String .format ("gvm-cli --timeout 600 --gmp-username=%s --gmp-password=%s socket --socketpath %s --xml " ,user .getUsername (), user .getPassword (), socket );
301+ return String .format ("%s --timeout 600 --gmp-username=%s --gmp-password=%s socket --socketpath %s --xml " , gvmCli ,user .getUsername (), user .getPassword (), socket );
289302 }
290303}
0 commit comments