def testSignatureAdd(self): title = SIGNATURE_TITLE description = SIGNATURE_DESCRIPTION data = SIGNATURE_DATA data_type = TDT source_name = TSRC user = TUSER_NAME (status) = handlers.handle_signature_file(data, source_name, user, description, title, data_type)
def obj_create(self, bundle, **kwargs): """ Handles creating Signatures through the API. :param bundle: Bundle containing the information to create the RawData. :type bundle: Tastypie Bundle object. :returns: HttpResponse. """ analyst = bundle.request.user.username content = {'return_code': 1, 'type': 'Signature'} data = bundle.data.get('data', None) source = bundle.data.get('source', None) description = bundle.data.get('description', '') title = bundle.data.get('title', None) data_type = bundle.data.get('data_type', None) data_type_min_version = bundle.data.get('data_type_min_version', None) data_type_max_version = bundle.data.get('data_type_max_version', None) data_type_dependency = bundle.data.get('data_type_dependency', None) link_id = bundle.data.get('link_id', None) copy_rels = bundle.data.get('copy_relationships', False) method = bundle.data.get('method', None) or 'Upload' reference = bundle.data.get('reference', None) bucket_list = bundle.data.get('bucket_list', None) ticket = bundle.data.get('ticket', None) if not title: content['message'] = "Must provide a title." self.crits_response(content) if not data_type: content['message'] = "Must provide a data type." self.crits_response(content) result = handle_signature_file(data, source, analyst, description, title, data_type, data_type_min_version, data_type_max_version, data_type_dependency,link_id, method=method, reference=reference, copy_rels=copy_rels, bucket_list=bucket_list, ticket=ticket) if result.get('message'): content['message'] = result.get('message') if result.get('_id'): url = reverse('api_dispatch_detail', kwargs={'resource_name': 'signatures', 'api_name': 'v1', 'pk': str(result.get('_id'))}) content['url'] = url content['id'] = str(result.get('_id')) if result['success']: content['return_code'] = 0 self.crits_response(content)
def setUp(self): prep_db() self.factory = RequestFactory() self.user = CRITsUser.objects(username=TUSER_NAME).first() self.user.sources.append(TSRC) self.user.save() # Add a test signature title = SIGNATURE_TITLE description = SIGNATURE_DESCRIPTION data = SIGNATURE_DATA data_type = TDT source_name = TSRC user = TUSER_NAME (status) = handlers.handle_signature_file(data, source_name, user, description, title, data_type)
def upload_signature(request, link_id=None): """ Upload new Signature to CRITs. :param request: Django request object (Required) :type request: :class:`django.http.HttpRequest` :param link_id: The LinkId of Signature if this is a new version upload. :type link_id: str :returns: :class:`django.http.HttpResponse` """ if request.method == 'POST': form = UploadSignatureForm(request.user, request.POST) if form.is_valid(): analyst = request.user.username data = request.POST.get('data', None) source = form.cleaned_data.get('source') user = request.user.username description = form.cleaned_data.get('description', '') title = form.cleaned_data.get('title', None) data_type = form.cleaned_data.get('data_type', None) data_type_min_version = form.cleaned_data.get('data_type_min_version', None) data_type_max_version = form.cleaned_data.get('data_type_max_version', None) related_id=form.cleaned_data.get('related_id', '') related_type = form.cleaned_data.get('related_type', '') relationship_type = form.cleaned_data.get('relationship_type', '') ''' Parse out dependencies and add any new ones ''' depend_string = form.cleaned_data.get('data_type_dependency', None) new_list = depend_string.split(',') data_type_dependency = [] for dtd in new_list: dtd = dtd.strip() dtd = str(dtd) if dtd: data_type_dependency.append(dtd) add_new_signature_dependency(dtd,analyst) copy_rels = request.POST.get('copy_relationships', False) link_id = link_id bucket_list = form.cleaned_data.get('bucket_list') ticket = form.cleaned_data.get('ticket') method = form.cleaned_data.get('method', '') or 'Upload' reference = form.cleaned_data.get('reference', '') status = handle_signature_file(data, source, user, description, title, data_type, data_type_min_version, data_type_max_version, data_type_dependency, link_id, method=method, reference=reference, copy_rels=copy_rels, bucket_list=bucket_list, ticket=ticket, related_id=related_id, related_type=related_type, relationship_type=relationship_type) if status['success']: jdump = json.dumps({ 'message': 'signature uploaded successfully! <a href="%s">View signature</a>' % reverse('crits.signatures.views.signature_detail', args=[status['_id']]), 'success': True}) return HttpResponse(jdump, content_type="application/json") else: jdump = json.dumps({'success': False, 'message': status['message']}) return HttpResponse(jdump, content_type="application/json") else: jdump = json.dumps({'success': False, 'form': form.as_table()}) return HttpResponse(jdump, content_type="application/json") else: return render_to_response('error.html', {'error': "Expected POST."}, RequestContext(request))
def obj_create(self, bundle, **kwargs): """ Handles creating Signatures through the API. :param bundle: Bundle containing the information to create the RawData. :type bundle: Tastypie Bundle object. :returns: HttpResponse. """ user = bundle.request.user content = {'return_code': 1, 'type': 'Signature'} data = bundle.data.get('data', None) source = bundle.data.get('source', None) description = bundle.data.get('description', '') tlp = bundle.data.get('tlp', 'amber') title = bundle.data.get('title', None) data_type = bundle.data.get('data_type', None) data_type_min_version = bundle.data.get('data_type_min_version', None) data_type_max_version = bundle.data.get('data_type_max_version', None) data_type_dependency = bundle.data.get('data_type_dependency', None) link_id = bundle.data.get('link_id', None) copy_rels = bundle.data.get('copy_relationships', False) method = bundle.data.get('method', None) or 'Upload' reference = bundle.data.get('reference', None) bucket_list = bundle.data.get('bucket_list', None) ticket = bundle.data.get('ticket', None) if not title: content['message'] = "Must provide a title." self.crits_response(content) if not data_type: content['message'] = "Must provide a data type." self.crits_response(content) if not user.has_access_to(SignatureACL.WRITE): content['message'] = 'User does not have permission to create Object.' self.crits_response(content) result = handle_signature_file(data, source, user, description, title, data_type, data_type_min_version, data_type_max_version, data_type_dependency,link_id, source_method=method, source_reference=reference, source_tlp=tlp, copy_rels=copy_rels, bucket_list=bucket_list, ticket=ticket) if result.get('message'): content['message'] = result.get('message') if result.get('_id'): url = reverse('api_dispatch_detail', kwargs={'resource_name': 'signatures', 'api_name': 'v1', 'pk': str(result.get('_id'))}) content['url'] = url content['id'] = str(result.get('_id')) if result['success']: content['return_code'] = 0 self.crits_response(content)
def upload_signature(request, link_id=None): """ Upload new Signature to CRITs. :param request: Django request object (Required) :type request: :class:`django.http.HttpRequest` :param link_id: The LinkId of Signature if this is a new version upload. :type link_id: str :returns: :class:`django.http.HttpResponse` """ if request.method == 'POST': form = UploadSignatureForm(request.user, request.POST) if form.is_valid(): analyst = request.user.username data = request.POST.get('data', None) source = form.cleaned_data.get('source') user = request.user.username description = form.cleaned_data.get('description', '') title = form.cleaned_data.get('title', None) data_type = form.cleaned_data.get('data_type', None) data_type_min_version = form.cleaned_data.get( 'data_type_min_version', None) data_type_max_version = form.cleaned_data.get( 'data_type_max_version', None) ''' Parse out dependencies and add any new ones ''' depend_string = form.cleaned_data.get('data_type_dependency', None) new_list = depend_string.split(',') data_type_dependency = [] for dtd in new_list: dtd = dtd.strip() dtd = str(dtd) if dtd: data_type_dependency.append(dtd) add_new_signature_dependency(dtd, analyst) copy_rels = request.POST.get('copy_relationships', False) link_id = link_id bucket_list = form.cleaned_data.get('bucket_list') ticket = form.cleaned_data.get('ticket') method = form.cleaned_data.get('method', '') or 'Upload' reference = form.cleaned_data.get('reference', '') status = handle_signature_file(data, source, user, description, title, data_type, data_type_min_version, data_type_max_version, data_type_dependency, link_id, method=method, reference=reference, copy_rels=copy_rels, bucket_list=bucket_list, ticket=ticket) if status['success']: jdump = json.dumps({ 'message': 'signature uploaded successfully! <a href="%s">View signature</a>' % reverse('crits.signatures.views.signature_detail', args=[status['_id']]), 'success': True }) return HttpResponse(jdump, content_type="application/json") else: jdump = json.dumps({ 'success': False, 'message': status['message'] }) return HttpResponse(jdump, content_type="application/json") else: jdump = json.dumps({'success': False, 'form': form.as_table()}) return HttpResponse(jdump, content_type="application/json") else: return render_to_response('error.html', {'error': "Expected POST."}, RequestContext(request))