Exemplo n.º 1
0
def email_yaml_add(request, email_id=None):
    """
    Upload an email using YAML. Should be an AJAX POST.

    :param request: Django request object (Required)
    :type request: :class:`django.http.HttpRequest`
    :param email_id: The ObjectId of an existing email to update.
    :type email_id: str
    :returns: :class:`django.http.HttpResponse`
    """

    yaml_form = EmailYAMLForm(request.user, request.POST)
    json_reply = {"form": yaml_form.as_table(), "success": False, "message": ""}

    if request.method != "POST":
        message = "Must submit via POST"
        if request.is_ajax():
            json_reply["message"] = message
            return HttpResponse(json.dumps(json_reply), mimetype="application/json")
        else:
            return render_to_response("error.html", {"error": message}, RequestContext(request))

    if not yaml_form.is_valid():
        message = "Form is invalid."
        if request.is_ajax():
            json_reply["message"] = message
            return HttpResponse(json.dumps(json_reply), mimetype="application/json")
        else:
            return render_to_response("error.html", {"error": message}, RequestContext(request))

    method = "YAML Upload"
    if yaml_form.cleaned_data["source_method"]:
        method = method + " - " + yaml_form.cleaned_data["source_method"]

    obj = handle_yaml(
        yaml_form.cleaned_data["yaml_data"],
        yaml_form.cleaned_data["source"],
        yaml_form.cleaned_data["source_reference"],
        request.user.username,
        method,
        email_id=email_id,
        save_unsupported=yaml_form.cleaned_data["save_unsupported"],
        campaign=yaml_form.cleaned_data["campaign"],
        confidence=yaml_form.cleaned_data["campaign_confidence"],
    )
    if not obj["status"]:
        if request.is_ajax():
            json_reply["message"] = obj["reason"]
            return HttpResponse(json.dumps(json_reply), mimetype="application/json")
        else:
            return render_to_response("error.html", {"error": obj["reason"]}, RequestContext(request))

    if request.is_ajax():
        json_reply["success"] = True
        json_reply["message"] = 'Email uploaded successfully. <a href="%s">View email.</a>' % reverse(
            "crits.emails.views.email_detail", args=[obj["object"].id]
        )
        return HttpResponse(json.dumps(json_reply), mimetype="application/json")
    else:
        return HttpResponseRedirect(reverse("crits.emails.views.email_detail", args=[obj["object"].id]))
Exemplo n.º 2
0
def email_yaml_add(request, email_id=None):
    """
    Upload an email using YAML. Should be an AJAX POST.

    :param request: Django request object (Required)
    :type request: :class:`django.http.HttpRequest`
    :param email_id: The ObjectId of an existing email to update.
    :type email_id: str
    :returns: :class:`django.http.HttpResponse`
    """

    yaml_form = EmailYAMLForm(request.user, request.POST)
    user = request.user
    json_reply = {'form': yaml_form.as_table(), 'success': False}

    if request.method != "POST":
        message = "Must submit via POST"
    else:
        if not yaml_form.is_valid():
            message = "Form is invalid."
        elif not user.has_access_to(EmailACL.WRITE):
            message = "User does not have permission to add email."
        else:
            form_data = yaml_form.cleaned_data
            method = "YAML Upload"
            if form_data['source_method']:
                method = method + " - " + form_data['source_method']

            result = handle_yaml(
                form_data['yaml_data'], form_data['source_name'],
                form_data['source_reference'], method, form_data['source_tlp'],
                user, email_id, form_data['save_unsupported'],
                form_data['campaign'], form_data['campaign_confidence'],
                form_data['bucket_list'], form_data['ticket'],
                form_data['related_id'], form_data['related_type'],
                form_data['relationship_type'])

            if result['status']:
                redirect = reverse('crits-emails-views-email_detail',
                                   args=[result['object'].id])
                if not request.is_ajax():
                    return HttpResponseRedirect(redirect)
                json_reply['success'] = True
                message = 'Email uploaded successfully'
                if result.get('reason'):
                    message += ', but %s' % result['reason']
                message += ('. <a href="%s">View email.</a>' % redirect)
            else:
                message = result['reason']

    if request.is_ajax():
        json_reply['message'] = message
        return HttpResponse(json.dumps(json_reply),
                            content_type="application/json")
    else:
        return render(request, 'error.html', {'error': message})
Exemplo n.º 3
0
def email_yaml_add(request, email_id=None):
    """
    Upload an email using YAML. Should be an AJAX POST.

    :param request: Django request object (Required)
    :type request: :class:`django.http.HttpRequest`
    :param email_id: The ObjectId of an existing email to update.
    :type email_id: str
    :returns: :class:`django.http.HttpResponse`
    """

    yaml_form = EmailYAMLForm(request.user, request.POST)
    json_reply = {
                   'form': yaml_form.as_table(),
                   'success': False,
                   'message': ""
                 }

    if request.method != "POST":
        message = "Must submit via POST"
        if request.is_ajax():
            json_reply['message'] = message
            return HttpResponse(json.dumps(json_reply),
                                mimetype="application/json")
        else:
            return render_to_response('error.html',
                                      {'error': message},
                                      RequestContext(request))

    if not yaml_form.is_valid():
        message = "Form is invalid."
        if request.is_ajax():
            json_reply['message'] = message
            return HttpResponse(json.dumps(json_reply),
                                mimetype="application/json")
        else:
            return render_to_response('error.html',
                                      {'error': message},
                                      RequestContext(request))

    method = "YAML Upload"
    if yaml_form.cleaned_data['source_method']:
        method = method + " - " + yaml_form.cleaned_data['source_method']

    obj = handle_yaml(yaml_form.cleaned_data['yaml_data'],
                      yaml_form.cleaned_data['source'],
                      yaml_form.cleaned_data['source_reference'],
                      request.user.username,
                      method,
                      email_id=email_id,
                      save_unsupported=yaml_form.cleaned_data['save_unsupported'],
                      campaign=yaml_form.cleaned_data['campaign'],
                      confidence=yaml_form.cleaned_data['campaign_confidence'],
                      bucket_list=yaml_form.cleaned_data['bucket_list'],
                      ticket=yaml_form.cleaned_data['ticket'])
    if not obj['status']:
        if request.is_ajax():
            json_reply['message'] = obj['reason']
            return HttpResponse(json.dumps(json_reply),
                                mimetype="application/json")
        else:
            return render_to_response('error.html',
                                      {'error': obj['reason']},
                                      RequestContext(request))

    if request.is_ajax():
        json_reply['success'] = True
        json_reply['message'] = 'Email uploaded successfully. <a href="%s">View email.</a>' % reverse('crits.emails.views.email_detail', args=[obj['object'].id])
        return HttpResponse(json.dumps(json_reply),
                            mimetype="application/json")
    else:
        return HttpResponseRedirect(reverse('crits.emails.views.email_detail',
                                            args=[obj['object'].id]))
Exemplo n.º 4
0
def email_yaml_add(request, email_id=None):
    """
    Upload an email using YAML. Should be an AJAX POST.

    :param request: Django request object (Required)
    :type request: :class:`django.http.HttpRequest`
    :param email_id: The ObjectId of an existing email to update.
    :type email_id: str
    :returns: :class:`django.http.HttpResponse`
    """

    yaml_form = EmailYAMLForm(request.user, request.POST)
    user = request.user
    json_reply = {
                   'form': yaml_form.as_table(),
                   'success': False
                 }

    if request.method != "POST":
        message = "Must submit via POST"
    else:
        if not yaml_form.is_valid():
            message = "Form is invalid."
        elif not user.has_access_to(EmailACL.WRITE):
            message = "User does not have permission to add email."
        else:
            form_data = yaml_form.cleaned_data
            method = "YAML Upload"
            if form_data['source_method']:
                method = method + " - " + form_data['source_method']

            result = handle_yaml(form_data['yaml_data'],
                                 form_data['source_name'],
                                 form_data['source_reference'],
                                 method,
                                 form_data['source_tlp'],
                                 request.user,
                                 email_id,
                                 form_data['save_unsupported'],
                                 form_data['campaign'],
                                 form_data['campaign_confidence'],
                                 form_data['bucket_list'],
                                 form_data['ticket'],
                                 form_data['related_id'],
                                 form_data['related_type'],
                                 form_data['relationship_type'])

            if result['status']:
                redirect = reverse('crits.emails.views.email_detail',
                                   args=[result['object'].id])
                if not request.is_ajax():
                    return HttpResponseRedirect(redirect)
                json_reply['success'] = True
                message = 'Email uploaded successfully'
                if result.get('reason'):
                    message += ', but %s' % result['reason']
                message += ('. <a href="%s">View email.</a>' % redirect)
            else:
                message = result['reason']

    if request.is_ajax():
        json_reply['message'] = message
        return HttpResponse(json.dumps(json_reply),
                            content_type="application/json")
    else:
        return render_to_response('error.html',
                                  {'error': message},
                                  RequestContext(request))