def get_context_data(self, **kwargs): ctx = super(Create, self).get_context_data(**kwargs) # add vars infos ctx['template_vars'] = get_template_vars() return ctx
def test_global_vars(self): var_list = get_template_vars() date = datetime.now() # date var = self.search_var(var_list, 'date') self.assertIsNotNone(var) self.assertEqual(var['value'], date.strftime('%d/%m/%Y')) # time var = self.search_var(var_list, 'time') self.assertIsNotNone(var) self.assertEqual(var['value'], date.strftime('%H:%M'))
def test_target_vars(self): email_template = EmailTemplate.objects.create( name='email template name', email_subject='email template subject', from_email='*****@*****.**', text_content='content') var_list = get_template_vars(email_template=email_template) # email subject var = self.search_var(var_list, 'email_subject') self.assertIsNotNone(var) self.assertEqual(var['value'], 'email template subject') # from email var = self.search_var(var_list, 'from_email') self.assertIsNotNone(var) self.assertEqual(var['value'], '*****@*****.**')
def test_email_template_vars(self): target = Target.objects.create( email='*****@*****.**', first_name='John', last_name='Doe', group=TargetGroup.objects.create(name='test group')) var_list = get_template_vars(target=target) # email var = self.search_var(var_list, 'email') self.assertIsNotNone(var) self.assertEqual(var['value'], '*****@*****.**') # first name var = self.search_var(var_list, 'first_name') self.assertIsNotNone(var) self.assertEqual(var['value'], 'John') # last name var = self.search_var(var_list, 'last_name') self.assertIsNotNone(var) self.assertEqual(var['value'], 'Doe')
def get(self, name): return self._search_name(get_template_vars(), name)
def landing_page(request, tracker_id): """Show landing page. :param request: :param tracker_id: :return: """ # add infos tracker = get_object_or_404(Tracker, pk=tracker_id) tracker_infos = TrackerInfos.create(target_tracker=tracker, http_request=request) count = TrackerInfos.objects.filter(target_tracker=tracker).count() # update values tracker.value = 'opened' tracker.infos = count tracker.save() # return landing page try: campaign = tracker.campaign email_template = campaign.email_template landing_page = email_template.landing_page html = landing_page.html target = tracker.target for var in get_template_vars(campaign, target, email_template): html = html.replace(var['name'], var['value'] or '') # add navigator info script navigator_info = render_to_string( 'phishing/landingpage_navigator_infos.html', { 'tracker_id': tracker.pk, }) html = html.replace('</body>', '%s</body>' % navigator_info) # replace the post tracker id if POST_TRACKER_ID in html: tracker_post = Tracker.objects.filter( campaign=campaign, target=target, key=TRACKER_LANDING_PAGE_POST).first() if tracker_post: value = str(tracker_post.pk) else: value = 'unknown' tracker_infos.raw = 'tracker_post_id of %s in unknown' % \ tracker_id tracker_infos.save() html = html.replace(POST_TRACKER_ID, value) # replace the landing page domain if POST_DOMAIN in html: landing_page_hostname = request.META.get('HTTP_HOST') or \ settings.HOSTNAME.split('//', 1)[-1].split('/')[0] html = html.replace(POST_DOMAIN, landing_page_hostname) landing_page.html = html landing_page_printed.send(sender=request, request=request, landing_page=landing_page) return HttpResponse(landing_page.html, content_type='text/html') except Exception as e: tracker_infos.raw = '%s: %s' % (e.__class__.__name__, e) tracker_infos.save() return HttpResponseRedirect('https://www.google.com/')