Search in sources :

Example 1 with DiscoveryResponse

use of org.mitre.taxii.messages.xml11.DiscoveryResponse in project metron by apache.

the class TaxiiHandler method discoverPollingClient.

private static DiscoveryResults discoverPollingClient(URL proxy, URL endpoint, String username, String password, HttpClientContext context, String defaultCollection) throws Exception {
    DiscoveryResults results = new DiscoveryResults();
    {
        HttpClient discoverClient = buildClient(proxy, username, password);
        String sessionID = MessageHelper.generateMessageId();
        // Prepare the message to send.
        DiscoveryRequest request = messageFactory.get().createDiscoveryRequest().withMessageId(sessionID);
        DiscoveryResponse response = call(discoverClient, endpoint.toURI(), request, context, DiscoveryResponse.class);
        for (ServiceInstanceType serviceInstance : response.getServiceInstances()) {
            if (serviceInstance.isAvailable() && serviceInstance.getServiceType() == ServiceTypeEnum.POLL) {
                results.pollEndpoint = new URL(serviceInstance.getAddress());
            } else if (serviceInstance.isAvailable() && serviceInstance.getServiceType() == ServiceTypeEnum.COLLECTION_MANAGEMENT) {
                results.collectionManagementEndpoint = new URL(serviceInstance.getAddress());
            }
        }
        if (results.pollEndpoint == null) {
            throw new RuntimeException("Unable to discover a poll TAXII feed");
        }
    }
    if (defaultCollection == null) // get collections
    {
        HttpClient discoverClient = buildClient(proxy, username, password);
        String sessionID = MessageHelper.generateMessageId();
        CollectionInformationRequest request = messageFactory.get().createCollectionInformationRequest().withMessageId(sessionID);
        CollectionInformationResponse response = call(discoverClient, results.collectionManagementEndpoint.toURI(), request, context, CollectionInformationResponse.class);
        LOG.info("Unable to find the default collection; available collections are:");
        for (CollectionRecordType c : response.getCollections()) {
            LOG.info(c.getCollectionName());
            results.collections.add(c.getCollectionName());
        }
        System.exit(0);
    }
    return results;
}
Also used : CollectionInformationResponse(org.mitre.taxii.messages.xml11.CollectionInformationResponse) ServiceInstanceType(org.mitre.taxii.messages.xml11.ServiceInstanceType) DiscoveryResponse(org.mitre.taxii.messages.xml11.DiscoveryResponse) CollectionRecordType(org.mitre.taxii.messages.xml11.CollectionRecordType) HttpClient(org.mitre.taxii.client.HttpClient) CloseableHttpClient(org.apache.http.impl.client.CloseableHttpClient) CollectionInformationRequest(org.mitre.taxii.messages.xml11.CollectionInformationRequest) DiscoveryRequest(org.mitre.taxii.messages.xml11.DiscoveryRequest) URL(java.net.URL)

Aggregations

URL (java.net.URL)1 CloseableHttpClient (org.apache.http.impl.client.CloseableHttpClient)1 HttpClient (org.mitre.taxii.client.HttpClient)1 CollectionInformationRequest (org.mitre.taxii.messages.xml11.CollectionInformationRequest)1 CollectionInformationResponse (org.mitre.taxii.messages.xml11.CollectionInformationResponse)1 CollectionRecordType (org.mitre.taxii.messages.xml11.CollectionRecordType)1 DiscoveryRequest (org.mitre.taxii.messages.xml11.DiscoveryRequest)1 DiscoveryResponse (org.mitre.taxii.messages.xml11.DiscoveryResponse)1 ServiceInstanceType (org.mitre.taxii.messages.xml11.ServiceInstanceType)1