def get_campaign_details(campaign_name, analyst): """ Generate the data to render the Campaign details template. :param campaign_name: The name of the Campaign to get details for. :type campaign_name: str :param analyst: The user requesting this information. :type analyst: str :returns: template (str), arguments (dict) """ template = None sources = user_sources(analyst) campaign_detail = Campaign.objects(name=campaign_name).first() if not campaign_detail: template = "error.html" args = {"error": 'No data exists for this campaign.'} return template, args ttp_form = TTPForm() # remove pending notifications for user remove_user_from_notification("%s" % analyst, campaign_detail.id, 'Campaign') # subscription subscription = { 'type': 'Campaign', 'id': campaign_detail.id, 'subscribed': is_user_subscribed("%s" % analyst, 'Campaign', campaign_detail.id), } #objects objects = campaign_detail.sort_objects() #relationships relationships = campaign_detail.sort_relationships("%s" % analyst, meta=True) # relationship relationship = {'type': 'Campaign', 'value': campaign_detail.id} #comments comments = { 'comments': campaign_detail.get_comments(), 'url_key': campaign_name } #screenshots screenshots = campaign_detail.get_screenshots(analyst) # Get item counts formatted_query = {'campaign.name': campaign_name} counts = {} for col_obj in [Sample, PCAP, Indicator, Email, Domain, IP, Event]: counts[col_obj._meta['crits_type']] = col_obj.objects( source__name__in=sources, __raw__=formatted_query).count() # Item counts for targets uniq_addrs = get_campaign_targets(campaign_name, analyst) counts['Target'] = Target.objects(email_address__in=uniq_addrs).count() # favorites favorite = is_user_favorite("%s" % analyst, 'Campaign', campaign_detail.id) # analysis results service_results = campaign_detail.get_analysis_results() args = { 'objects': objects, 'relationships': relationships, "relationship": relationship, 'comments': comments, "subscription": subscription, "campaign_detail": campaign_detail, "counts": counts, "favorite": favorite, "screenshots": screenshots, 'service_results': service_results, "ttp_form": ttp_form } return template, args
def get_campaign_details(campaign_name, analyst): """ Generate the data to render the Campaign details template. :param campaign_name: The name of the Campaign to get details for. :type campaign_name: str :param analyst: The user requesting this information. :type analyst: str :returns: template (str), arguments (dict) """ template = None sources = user_sources(analyst) campaign_detail = Campaign.objects(name=campaign_name).first() if not campaign_detail: template = "error.html" args = {"error": 'No data exists for this campaign.'} return template, args campaign_detail.sanitize(username=analyst) ttp_form = TTPForm() # remove pending notifications for user remove_user_from_notification("%s" % analyst, campaign_detail.id, 'Campaign') # subscription subscription = { 'type': 'Campaign', 'id': campaign_detail.id, 'subscribed': is_user_subscribed("%s" % analyst, 'Campaign', campaign_detail.id), } #objects objects = campaign_detail.sort_objects() #relationships relationships = campaign_detail.sort_relationships("%s" % analyst, meta=True) # relationship relationship = {'type': 'Campaign', 'value': campaign_detail.id} #comments comments = {'comments': campaign_detail.get_comments(), 'url_key': campaign_name} #screenshots screenshots = campaign_detail.get_screenshots(analyst) # Get item counts formatted_query = {'campaign.name': campaign_name} counts = {} for col_obj in [Actor, Backdoor, Exploit, Sample, PCAP, Indicator, Email, Domain, IP, Event]: counts[col_obj._meta['crits_type']] = col_obj.objects(source__name__in=sources, __raw__=formatted_query).count() # Item counts for targets uniq_addrs = get_campaign_targets(campaign_name, analyst) counts['Target'] = Target.objects(email_address__in=uniq_addrs).count() # favorites favorite = is_user_favorite("%s" % analyst, 'Campaign', campaign_detail.id) # analysis results service_results = campaign_detail.get_analysis_results() args = {'objects': objects, 'relationships': relationships, "relationship": relationship, 'comments': comments, "subscription": subscription, "campaign_detail": campaign_detail, "counts": counts, "favorite": favorite, "screenshots": screenshots, 'service_results': service_results, "ttp_form": ttp_form, "CampaignACL": CampaignACL} return template, args