Example #1
0
def inbox_service(request, inbox_name):
    """Handles TAXII Inbox Service requests."""
    logger = logging.getLogger('TAXIIApplication.taxii.views.inbox_service')
    logger.debug('Entering Inbox service')

    resp = handlers.validate_taxii_request(request)
    if resp: return resp # if validation failed, return the response

    try:
        taxii_message = tm.get_message_from_xml(request.body)
    except Exception as ex:
        logger.debug('Unable to parse inbound message:s', ex.message)
        m = tm.StatusMessage(tm.generate_message_id(), '0', status_type=tm.ST_BAD_MESSAGE, message='Message received could not be parsed')
        return handlers.create_taxii_response(m, use_https=request.is_secure())

    logger.debug('Inbox [%s] received TAXII message with id [%s] and type [%s]',
                 make_safe(inbox_name), make_safe(taxii_message.message_id), make_safe(taxii_message.message_type))

    if taxii_message.message_type != tm.MSG_INBOX_MESSAGE:
        logger.info('TAXII message with id [%s] was not Inbox type [%s]', make_safe(taxii_message.message_id), make_safe(taxii_message.message_type))
        m = tm.StatusMessage(tm.generate_message_id(), taxii_message.message_id, status_type=tm.ST_FAILURE, message='Message sent to Inbox service did not have an inbox Message type')
        return handlers.create_taxii_response(m, use_https=request.is_secure())

    resp = handlers.inbox_add_content(request, inbox_name, taxii_message)
    return resp
Example #2
0
def subscription_service(request):
    """Handles TAXII Subscription Service requests."""
    logger = logging.getLogger("TAXIIApplication.taxii.views.subscription_service")
    logger.debug('Entering subscription service')

    resp = handlers.validate_taxii_request(request)
    if resp: return resp # if validation failed, return the response

    try:
        taxii_message = tm_version.get_message_from_xml(request.body)
    except Exception as ex:
        logger.debug('Unable to parse inbound message: %s', str(ex))
        m = tm.StatusMessage(tm.generate_message_id(), '0', status_type=tm.ST_BAD_MESSAGE, message='Message received could not be parsed')
        return handlers.create_taxii_response(m, use_https=request.is_secure())

    logger.debug('Message received TAXII message with id [%s] and type [%s]', make_safe(taxii_message.message_id), make_safe(taxii_message.message_type))

    if taxii_message.message_type != tm_version.MSG_MANAGE_FEED_SUBSCRIPTION_REQUEST:
        logger.info('TAXII message with id [%s] was not Subscription Managment request [%s]', make_safe(taxii_message.message_id), make_safe(taxii_message.message_type))
        m = tm_version.StatusMessage(tm.generate_message_id(), taxii_message.message_id, status_type=tm.ST_FAILURE, message='Message sent to feed managment service did not have a feed_managmen_request message type')
        return handlers.create_taxii_response(m, use_https=request.is_secure())

    resp = handlers.feed_subscription_get_content(request, taxii_message)

    logger.debug("We send the response to the client")
    return resp
Example #3
0
 def inner(request, *args, **kwargs):
     if not taxii.settings.AUTH_REQUIRED:
         return func(request, *args, **kwargs)
     elif request.user.is_authenticated():
         return func(request, *args, **kwargs)
     
     m = tm.StatusMessage(tm.generate_message_id(), '0', status_type=tm.ST_UNAUTHORIZED, message='You are not authorized to access this URL.')
     return handlers.create_taxii_response(m)
Example #4
0
    def process_exception(self, request, exception):
        #Method that process exceptions
        logger = logging.getLogger('TAXIIApplication.taxii.middleware.ProcessExceptionMiddleware.process_exception')
        logger.exception('Server error occured')
    
        if request.path.startswith('/services'):
            logger.debug('Returning ST_FAILURE message')
            m = tm.StatusMessage(tm.generate_message_id(), '0', status_type=tm.ST_FAILURE, message='An internal server error occurred')
            return handlers.create_taxii_response(m, handlers.HTTP_STATUS_OK, use_https=request.is_secure())

        resp = HttpResponseServerError()
        resp.body = 'A server error occurred'
        return resp
Example #5
0
def discovery_service(request):
    """Handles TAXII Discovery Service requests"""
    logger = logging.getLogger('TAXIIApplication.taxii.views.discovery_service')
    logger.debug('Entering discovery service')

    resp = handlers.validate_taxii_request(request)
    if resp: return resp # if validation fails, return the response

    try:
        taxii_message = tm.get_message_from_xml(request.body)
    except Exception as ex:
        logger.debug('Unable to parse inbound message: %s', ex.message)
        m = tm.StatusMessage(tm.generate_message_id(), '0', status_type=tm.ST_BAD_MESSAGE, message='Message received could not be parsed')
        return handlers.create_taxii_response(m, use_https=request.is_secure())

    logger.debug('Discovery service received TAXII message with id [%s] and type [%s]', make_safe(taxii_message.message_id), make_safe(taxii_message.message_type))

    if taxii_message.message_type != tm.MSG_DISCOVERY_REQUEST:
        logger.info('TAXII message with id [%s] was not Discovery request [%s]', make_safe(taxii_message.message_id), make_safe(taxii_message.message_type))
        m = tm.StatusMessage(tm.generate_message_id(), taxii_message.message_id, status_type=tm.ST_FAILURE, message='Message sent to discovery service did not have a discovery request message type')
        return handlers.create_taxii_response(m, use_https=request.is_secure())

    resp = handlers.discovery_get_services(request, taxii_message)
    return resp