Ejemplo n.º 1
0
def black_hole_mail(request):
    if request.method == "POST":
        text = request.POST["text"]
        user_ip = get_user_ip(request)
        user_sent_count = cache.get(f"mail_user_ip_{user_ip}")
        if not user_sent_count:
            cache.set(f"mail_user_ip_{user_ip}", 1, 30)
        else:
            user_sent_count += 1
            if user_sent_count > 4:
                return HttpResponse(json.dumps({"error": "Error: sending mail too frequently."}), content_type="application/json")
            else:
                cache.set(f"mail_user_ip_{user_ip}", user_sent_count, 30)
        if len(text) > 2000:
            return HttpResponse(json.dumps({"error": "Error: message too long. can only send 2000 characters."}), content_type="application/json")
        try:
            webhook = Webhook.partial(settings.MAIL_DISCORD_WEBHOOK_ID, settings.MAIL_DISCORD_WEBHOOK_TOKEN, adapter=RequestsWebhookAdapter())
            em = Embed(color=0x000000, title="Black Hole", description=f"⚫ You've got guyamail! 📬\n\n{text}", timestamp=datetime.utcnow())
            em.set_footer(text=f"IP hash: {hashlib.md5(user_ip.encode()).hexdigest()[:32]}")
            webhook.send(content=None, embed=em, username="******")
        except (AttributeError, NameError) as e:
            feedback_folder = os.path.join(settings.MEDIA_ROOT, "feedback")
            os.makedirs(feedback_folder, exist_ok=True)
            feedback_file = str(int(datetime.utcnow().timestamp()))
            with open(os.path.join(feedback_folder, f"{feedback_file}.txt"), "w") as f:
                f.write(text)
        return HttpResponse(json.dumps({"success": "Mail successfully crossed the event horizon"}), content_type="application/json")
Ejemplo n.º 2
0
 def process_response(self, request, response):
     ip = get_user_ip(request)
     if not cache.get(f"referral_{ip}") and request.method == "GET" and request.GET.get('rid') \
         and response.status_code not in [301, 302]:
         # Handle only one referral from an IP at a time
         cache.set(f"referral_{ip}", {
             "rid": request.GET.get('rid'),
             "consumed": False
         }, 120)
     return response
Ejemplo n.º 3
0
def referral(request):
    if request.method == "POST":
        ip = get_user_ip(request)
        referral_metadata = cache.get(f"referral_{ip}")
        if referral_metadata and not referral_metadata["consumed"]:
            if request.POST["rid"] == referral_metadata["rid"]:
                cache.set(f"referral_{ip}", {"consumed": True}, 1800)
                try:
                    requests.post(settings.REFERRAL_SERVICE, referral_metadata)
                except:
                    pass
        return HttpResponse(status=200)
    else:
        return handle404(request, "")
Ejemplo n.º 4
0
def hit_count(request):
    if request.method == "POST":
        user_ip = get_user_ip(request)
        page_id = f"url_{request.POST['page_url']}/{user_ip}"
        if not cache.get(page_id):
            cache.set(page_id, page_id, 60)
            page_url = request.POST["page_url"]
            page_id = Page.objects.get(page_url=page_url).id
            page = ContentType.objects.get(app_label="misc", model="page")
            hit, _ = HitCount.objects.get_or_create(content_type=page,
                                                    object_id=page_id)
            hit.hits = F("hits") + 1
            hit.save()

    return HttpResponse(json.dumps({}), content_type="application/json")