nexpose_java_api
nexpose_java_api copied to clipboard
Library assumes XML being returned, not always true
The library currently assumes that the response will be XML, this isn't true for ad-hoc reports. Reports are returned in a multipart MIME message. The library currently breaks wen trying to pull down an ad-hoc report with a SAX error.
The following code repro's the issue:
import org.rapid7.nexpose.api.APIException;
import org.rapid7.nexpose.api.APIResponse;
import org.rapid7.nexpose.api.APISession;
import org.rapid7.nexpose.api.APISession.APISupportedVersion;
import org.rapid7.nexpose.api.ReportAdhocGenerateRequest;
import org.rapid7.nexpose.api.ReportConfigRequest;
import org.rapid7.nexpose.api.ReportListingRequest;
import org.rapid7.nexpose.api.generators.IContentGenerator;
import org.rapid7.nexpose.api.generators.ReportFiltersContentGenerator;
import org.rapid7.nexpose.api.generators.ReportFiltersContentGenerator.ReportFilter;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
public class Main
{
/**
* @param args
*/
public static void main(String[] args)
throws Exception
{
URL url;
APISession session;
try
{
url = new URL("https://127.0.0.1:3780");
session = new APISession(url, "xml", APISupportedVersion.V1_2, "username", "password");
}
catch (MalformedURLException ex)
{
throw new Exception(ex);
}
try
{
session.login(null);
}
catch (Exception e)
{
System.exit(1);
}
String sessionID = session.getSessionID();
ReportFiltersContentGenerator filters = new ReportFiltersContentGenerator();
List f = new ArrayList();
f.add(new ReportFilter("site", "1"));
filters.setFilters(f);
ReportAdhocGenerateRequest req = new ReportAdhocGenerateRequest(sessionID, null, "pdf", "audit-report", null, filters);
//String fdsa = req.toXML();
APIResponse resp = session.executeAPIRequest(req);
String requestXML = req.toXML();
resp = session.sendRawXMLRequest(requestXML, APISupportedVersion.V1_0);
String xml = resp.getResponse();
System.out.println(xml);
}
/////////////////////////////////////////////////////////////////////////
// Public methods
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
// Non-public methods
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
// Non-public fields
/////////////////////////////////////////////////////////////////////////
}