def upload_indicator(request): """ Upload new indicators (individual, blob, or CSV file). :param request: Django request object (Required) :type request: :class:`django.http.HttpRequest` :returns: :class:`django.http.HttpResponse` :class:`django.http.HttpResponseRedirect` """ if request.method == "POST": username = request.user.username failed_msg = '' result = None if request.POST['svalue'] == "Upload CSV": form = UploadIndicatorCSVForm( username, request.POST, request.FILES) if form.is_valid(): result = handle_indicator_csv(request.FILES['filedata'], request.POST['source'], request.POST['method'], request.POST['reference'], "file", username, add_domain=True) if result['success']: message = {'message': ('<div>%s <a href="%s">Go to all' ' indicators</a></div>' % (result['message'], reverse('crits.indicators.views.indicators_listing')))} else: failed_msg = '<div>%s</div>' % result['message'] if request.POST['svalue'] == "Upload Text": form = UploadIndicatorTextForm(username, request.POST) if form.is_valid(): result = handle_indicator_csv(request.POST['data'], request.POST['source'], request.POST['method'], request.POST['reference'], "ti", username, add_domain=True) if result['success']: message = {'message': ('<div>%s <a href="%s">Go to all' ' indicators</a></div>' % (result['message'], reverse('crits.indicators.views.indicators_listing')))} else: failed_msg = '<div>%s</div>' % result['message'] if request.POST['svalue'] == "Upload Indicator": form = UploadIndicatorForm(username, request.POST) if form.is_valid(): result = handle_indicator_ind( request.POST['value'], request.POST['source'], request.POST['indicator_type'], request.POST['threat_type'], request.POST['attack_type'], username, request.POST['method'], request.POST['reference'], add_domain=True, description=request.POST['description'], campaign=request.POST['campaign'], campaign_confidence=request.POST['campaign_confidence'], confidence=request.POST['confidence'], impact=request.POST['impact'], bucket_list=request.POST[form_consts.Common.BUCKET_LIST_VARIABLE_NAME], ticket=request.POST[form_consts.Common.TICKET_VARIABLE_NAME]) if result['success']: indicator_link = ((' - <a href=\"%s\">Go to this ' 'indicator</a> or <a href="%s">all ' 'indicators</a>.</div>') % (reverse('crits.indicators.views.indicator', args=[result['objectid']]), reverse('crits.indicators.views.indicators_listing'))) if result.get('is_new_indicator', False) == False: message = {'message': ('<div>Warning: Updated existing' ' Indicator!' + indicator_link)} else: message = {'message': ('<div>Indicator added ' 'successfully!' + indicator_link)} else: failed_msg = result['message'] + ' - ' if result == None or not result['success']: failed_msg += ('<a href="%s"> Go to all indicators</a></div>' % reverse('crits.indicators.views.indicators_listing')) message = {'message': failed_msg, 'form': form.as_table()} elif result != None: message['success'] = result['success'] if request.is_ajax(): return HttpResponse(json.dumps(message), mimetype="application/json") else: #file upload return render_to_response('file_upload_response.html', {'response': json.dumps(message)}, RequestContext(request))
def upload_indicator(request): """ Upload new indicators (individual, blob, or CSV file). :param request: Django request object (Required) :type request: :class:`django.http.HttpRequest` :returns: :class:`django.http.HttpResponse` :class:`django.http.HttpResponseRedirect` """ if request.method == "POST": username = request.user.username failed_msg = '' result = None if request.POST['svalue'] == "Upload CSV": form = UploadIndicatorCSVForm(username, request.POST, request.FILES) if form.is_valid(): result = handle_indicator_csv( request.FILES['filedata'], request.POST['source'], request.POST['method'], request.POST['reference'], "file", username, add_domain=True, related_id=request.POST['related_id'], related_type=request.POST['related_type'], relationship_type=request.POST['relationship_type']) if result['success']: message = { 'message': ('<div>%s <a href="%s">Go to all' ' indicators</a></div>' % (result['message'], reverse('crits.indicators.views.indicators_listing')) ) } else: failed_msg = '<div>%s</div>' % result['message'] if request.POST['svalue'] == "Upload Text": form = UploadIndicatorTextForm(username, request.POST) if form.is_valid(): result = handle_indicator_csv( request.POST['data'], request.POST['source'], request.POST['method'], request.POST['reference'], "ti", username, add_domain=True, related_id=request.POST['related_id'], related_type=request.POST['related_type'], relationship_type=request.POST['relationship_type']) if result['success']: message = { 'message': ('<div>%s <a href="%s">Go to all' ' indicators</a></div>' % (result['message'], reverse('crits.indicators.views.indicators_listing')) ) } else: failed_msg = '<div>%s</div>' % result['message'] if request.POST['svalue'] == "Upload Indicator": form = UploadIndicatorForm(username, request.POST) if form.is_valid(): result = handle_indicator_ind( request.POST['value'], request.POST['source'], request.POST['indicator_type'], request.POST['threat_type'], request.POST['attack_type'], username, request.POST['method'], request.POST['reference'], add_domain=True, description=request.POST['description'], campaign=request.POST['campaign'], campaign_confidence=request.POST['campaign_confidence'], confidence=request.POST['confidence'], impact=request.POST['impact'], bucket_list=request.POST[ form_consts.Common.BUCKET_LIST_VARIABLE_NAME], ticket=request.POST[ form_consts.Common.TICKET_VARIABLE_NAME], related_id=request.POST['related_id'], related_type=request.POST['related_type'], relationship_type=request.POST['relationship_type']) if result['success']: indicator_link = ( (' - <a href=\"%s\">Go to this ' 'indicator</a> or <a href="%s">all ' 'indicators</a>.</div>') % (reverse('crits.indicators.views.indicator', args=[result['objectid']]), reverse('crits.indicators.views.indicators_listing'))) if result.get('is_new_indicator', False) == False: message = { 'message': ('<div>Warning: Updated existing' ' Indicator!' + indicator_link) } else: message = { 'message': ('<div>Indicator added ' 'successfully!' + indicator_link) } else: failed_msg = result['message'] + ' - ' if result == None or not result['success']: failed_msg += ( '<a href="%s"> Go to all indicators</a></div>' % reverse('crits.indicators.views.indicators_listing')) message = {'message': failed_msg, 'form': form.as_table()} elif result != None: message['success'] = result['success'] if request.is_ajax(): return HttpResponse(json.dumps(message), content_type="application/json") else: #file upload return render_to_response('file_upload_response.html', {'response': json.dumps(message)}, RequestContext(request))
def upload_indicator(request): """ Upload new indicators (individual, blob, or CSV file). :param request: Django request object (Required) :type request: :class:`django.http.HttpRequest` :returns: :class:`django.http.HttpResponse` :class:`django.http.HttpResponseRedirect` """ if request.method == "POST": username = request.user.username failed_msg = "" result = None if request.POST["svalue"] == "Upload CSV": form = UploadIndicatorCSVForm(username, request.POST, request.FILES) if form.is_valid(): result = handle_indicator_csv( request.FILES["filedata"], request.POST["source"], request.POST["method"], request.POST["reference"], "file", username, add_domain=True, related_id=request.POST["related_id"], related_type=request.POST["related_type"], relationship_type=request.POST["relationship_type"], ) if result["success"]: message = { "message": ( '<div>%s <a href="%s">Go to all' " indicators</a></div>" % (result["message"], reverse("crits.indicators.views.indicators_listing")) ) } else: failed_msg = "<div>%s</div>" % result["message"] if request.POST["svalue"] == "Upload Text": form = UploadIndicatorTextForm(username, request.POST) if form.is_valid(): result = handle_indicator_csv( request.POST["data"], request.POST["source"], request.POST["method"], request.POST["reference"], "ti", username, add_domain=True, related_id=request.POST["related_id"], related_type=request.POST["related_type"], relationship_type=request.POST["relationship_type"], ) if result["success"]: message = { "message": ( '<div>%s <a href="%s">Go to all' " indicators</a></div>" % (result["message"], reverse("crits.indicators.views.indicators_listing")) ) } else: failed_msg = "<div>%s</div>" % result["message"] if request.POST["svalue"] == "Upload Indicator": form = UploadIndicatorForm(username, request.POST) if form.is_valid(): result = handle_indicator_ind( request.POST["value"], request.POST["source"], request.POST["indicator_type"], request.POST["threat_type"], request.POST["attack_type"], username, status=request.POST["status"], method=request.POST["method"], reference=request.POST["reference"], add_domain=True, description=request.POST["description"], campaign=request.POST["campaign"], campaign_confidence=request.POST["campaign_confidence"], confidence=request.POST["confidence"], impact=request.POST["impact"], bucket_list=request.POST[form_consts.Common.BUCKET_LIST_VARIABLE_NAME], ticket=request.POST[form_consts.Common.TICKET_VARIABLE_NAME], related_id=request.POST["related_id"], related_type=request.POST["related_type"], relationship_type=request.POST["relationship_type"], ) if result["success"]: indicator_link = ( ' - <a href="%s">Go to this ' 'indicator</a> or <a href="%s">all ' "indicators</a>.</div>" ) % ( reverse("crits.indicators.views.indicator", args=[result["objectid"]]), reverse("crits.indicators.views.indicators_listing"), ) if result.get("is_new_indicator", False) == False: message = {"message": ("<div>Warning: Updated existing" " Indicator!" + indicator_link)} else: message = {"message": ("<div>Indicator added " "successfully!" + indicator_link)} else: failed_msg = result["message"] + " - " if result == None or not result["success"]: failed_msg += '<a href="%s"> Go to all indicators</a></div>' % reverse( "crits.indicators.views.indicators_listing" ) message = {"message": failed_msg, "form": form.as_table()} elif result != None: message["success"] = result["success"] if request.is_ajax(): return HttpResponse(json.dumps(message), content_type="application/json") else: # file upload return render_to_response( "file_upload_response.html", {"response": json.dumps(message)}, RequestContext(request) )
def upload_indicator(request): """ Upload new indicators (individual, blob, or CSV file). :param request: Django request object (Required) :type request: :class:`django.http.HttpRequest` :returns: :class:`django.http.HttpResponse` :class:`django.http.HttpResponseRedirect` """ if request.method == "POST": username = request.user.username failed_msg = '' result = None if request.POST['svalue'] == "Upload CSV": form = UploadIndicatorCSVForm(username, request.POST, request.FILES) if form.is_valid(): result = handle_indicator_csv(request.FILES['filedata'], request.POST['source'], request.POST['reference'], "file", username, add_domain=True) if result['success']: message = { 'message': ('<div>CSV added successfully! <a ' 'href="%s">Go to all indicators</a>' '.</div>' % reverse('crits.indicators.views.indicators_listing')) } else: failed_msg = '<div>%s</div>' % result['message'] if request.POST['svalue'] == "Upload Text": form = UploadIndicatorTextForm(username, request.POST) if form.is_valid(): result = handle_indicator_csv(request.POST['data'], request.POST['source'], request.POST['reference'], "ti", username, add_domain=True) if result['success']: message = { 'message': ('<div>Indicators added successfully! ' '<a href="%s">Go to all indicators</a>' '.</div>' % reverse('crits.indicators.views.indicators_listing')) } else: failed_msg = '<div>%s</div>' % result['message'] if request.POST['svalue'] == "Upload Indicator": all_ind_type_choices = [(c[0], c[0], { 'datatype': c[1].keys()[0], 'datatype_value': c[1].values()[0] }) for c in get_object_types( active=False, query={'datatype.file': { '$exists': 0 }})] form = UploadIndicatorForm(username, all_ind_type_choices, request.POST) if form.is_valid(): if request.POST[ 'indicator_type'] == "URI - URL" and "://" not in request.POST[ 'value'].split('.')[0]: result = { "success": False, "message": "URI - URL must contain protocol prefix (e.g. http://, https://, ftp://)" } else: result = handle_indicator_ind( request.POST['value'], request.POST['source'], request.POST['reference'], request.POST['indicator_type'], username, add_domain=True, campaign=request.POST['campaign'], campaign_confidence=request. POST['campaign_confidence'], confidence=request.POST['confidence'], impact=request.POST['impact'], bucket_list=request.POST[ form_consts.Common.BUCKET_LIST_VARIABLE_NAME], ticket=request.POST[ form_consts.Common.TICKET_VARIABLE_NAME]) if result['success']: indicator_link = '<a href=\"%s\">Go to this indicator</a> or <a href="%s">all indicators</a>.</div>' % ( reverse('crits.indicators.views.indicator', args=[result['objectid']]), reverse('crits.indicators.views.indicators_listing')) if result.get('is_new_indicator', False) == False: message = { 'message': ('<div>Warning: Updated indicator since indicator already exists! ' + indicator_link) } else: message = { 'message': ('<div>Indicator added successfully! ' + indicator_link) } else: failed_msg = result['message'] if result == None or not result['success']: failed_msg += ( '<a href="%s">Go to all indicators</a>' '.</div>' % reverse('crits.indicators.views.indicators_listing')) message = {'message': failed_msg, 'form': form.as_table()} elif result != None: message['success'] = result['success'] if request.is_ajax(): return HttpResponse(json.dumps(message), mimetype="application/json") else: #file upload return render_to_response('file_upload_response.html', {'response': json.dumps(message)}, RequestContext(request))
def upload_indicator(request): """ Upload new indicators (individual, blob, or CSV file). :param request: Django request object (Required) :type request: :class:`django.http.HttpRequest` :returns: :class:`django.http.HttpResponse` :class:`django.http.HttpResponseRedirect` """ if request.method == "POST": username = request.user.username failed_msg = '' result = None; if request.POST['svalue'] == "Upload CSV": form = UploadIndicatorCSVForm(username, request.POST, request.FILES) if form.is_valid(): result = handle_indicator_csv(request.FILES['filedata'], request.POST['source'], request.POST['reference'], "file", username, add_domain=True) if result['success']: message = {'message': ('<div>CSV added successfully! <a ' 'href="%s">Go to all indicators</a>' '.</div>' % reverse('crits.indicators.views.indicators_listing'))} else: failed_msg = '<div>%s</div>' % result['message'] if request.POST['svalue'] == "Upload Text": form = UploadIndicatorTextForm(username, request.POST) if form.is_valid(): result = handle_indicator_csv(request.POST['data'], request.POST['source'], request.POST['reference'], "ti", username, add_domain=True) if result['success']: message = {'message': ('<div>Indicators added successfully! ' '<a href="%s">Go to all indicators</a>' '.</div>' % reverse('crits.indicators.views.indicators_listing'))} else: failed_msg = '<div>%s</div>' % result['message'] if request.POST['svalue'] == "Upload Indicator": all_ind_type_choices = [(c[0], c[0], {'datatype': c[1].keys()[0], 'datatype_value': c[1].values()[0]}) for c in get_object_types(active=False, query={'datatype.file':{'$exists':0}})] form = UploadIndicatorForm(username, all_ind_type_choices, request.POST) if form.is_valid(): if request.POST['indicator_type'] == "URI - URL" and "://" not in request.POST['value'].split('.')[0]: result = {"success" : False, "message" : "URI - URL must contain protocol prefix (e.g. http://, https://, ftp://)"} else: result = handle_indicator_ind(request.POST['value'], request.POST['source'], request.POST['reference'], request.POST['indicator_type'], username, add_domain=True, campaign=request.POST['campaign'], campaign_confidence=request.POST['campaign_confidence'], confidence=request.POST['confidence'], impact=request.POST['impact'], bucket_list=request.POST[form_consts.Common.BUCKET_LIST_VARIABLE_NAME], ticket=request.POST[form_consts.Common.TICKET_VARIABLE_NAME]) if result['success']: indicator_link = '<a href=\"%s\">Go to this indicator</a> or <a href="%s">all indicators</a>.</div>' % (reverse('crits.indicators.views.indicator', args=[result['objectid']]), reverse('crits.indicators.views.indicators_listing')); if result.get('is_new_indicator', False) == False: message = {'message': ('<div>Warning: Updated indicator since indicator already exists! ' + indicator_link)} else: message = {'message': ('<div>Indicator added successfully! ' + indicator_link)} else: failed_msg = result['message'] if result == None or not result['success']: failed_msg += ('<a href="%s">Go to all indicators</a>' '.</div>' % reverse('crits.indicators.views.indicators_listing')) message = {'message': failed_msg, 'form': form.as_table()} elif result != None: message['success'] = result['success'] if request.is_ajax(): return HttpResponse(json.dumps(message), mimetype="application/json") else: #file upload return render_to_response('file_upload_response.html', {'response': json.dumps(message)}, RequestContext(request))