Ejemplo n.º 1
0
def cagar(request):
    # Hash da URL
    url = request.POST['url']
    hash = hashlib.md5(url.lower()).hexdigest()
    
    # Verifica se usuário já cagou na URL
    cagadas = request.session.get('cagadas').split(',') if request.session.get('cagadas') else []
    if cagadas.count(hash):
        return HttpResponse(simplejson.dumps({'tipo':'ERROR', 'msg':'Você já cagou para essa URL.'}), content_type="application/json; charset=UTF-8")
        
    # Verifica se foi atingida a QTD máxima de cagadas por hora (máximo de 100 cagadas)
    data_ultima_hora = datetime.now() - timedelta(hours=1)
    qtd = Log.objects.filter(ip=request.META['REMOTE_ADDR'], data__gt=data_ultima_hora).count()
    if qtd > 100:
        return HttpResponse(simplejson.dumps({'tipo':'ERROR', 'msg':'Você atingiu a quantidade máxima de cagadas por hora.'}), content_type="application/json; charset=UTF-8")
        
    # Verifica se a URL já foi cagada alguma vez
    urls = Url.objects.filter(hash=hash)

    if urls:
        # Se a URL já foi cagada alguma vez, basta somar + 1 a sua quantidade
        Url.objects.update(qtd=F('qtd')+1)
        url_obj = urls[0]
    else:
        # Se a URL nunca foi cagada, verifica se a mesma é válida
        try:
            #page = urllib2.urlopen(url, timeout=3)
            page = urllib2.urlopen(url)
            content = page.read()
        except Exception, e:
            # Se a URL informada for inválida, é necessário logar a ação desse IP, afim de evitar um ataque com URLs inválidas, que será bloqueado com a verificação de QTD máxima de cagadas por hora
            log = Log(cagada_id=0, tipo='E', ip=request.META['REMOTE_ADDR'])
            log.save()
            return HttpResponse(simplejson.dumps({'tipo':'ERROR', 'msg':'A URL informada não é válida.'}), content_type="application/json; charset=UTF-8")

        # Faz um parser no documento HTML afim de recuperar o title e o description
        document = BeautifulSoup(content)

        try:
            titulo = document.head.title.string
        except Exception, e:
            titulo = 'Não encontrado'
Ejemplo n.º 2
0
def cagar_assunto(request):
    # Hash do assunto
    assunto = request.POST['assunto']
    hash = hashlib.md5(assunto.lower()).hexdigest()

    # Verifica se usuário já cagou para o assunto
    cagadas = request.session.get('cagadas').split(',') if request.session.get('cagadas') else []
    if cagadas.count(hash):
        return HttpResponse(simplejson.dumps({'tipo':'ERROR', 'msg':'Você já cagou para esse assunto.'}), content_type="application/json; charset=UTF-8")

    # Verifica se foi atingida a QTD máxima de cagadas por hora (máximo de 100 cagadas)
    data_ultima_hora = datetime.now() - timedelta(hours=1)
    qtd = Log.objects.filter(ip=request.META['REMOTE_ADDR'], data__gt=data_ultima_hora).count()
    if qtd > 100:
        return HttpResponse(simplejson.dumps({'tipo':'ERROR', 'msg':'Você atingiu a quantidade máxima de cagadas por hora.'}), content_type="application/json; charset=UTF-8")

    # Verifica se o assunto já foi cagada alguma vez
    assuntos = Assunto.objects.filter(hash=hash)

    if assuntos:
        # Se o assunto já foi cagado alguma vez, basta somar + 1 a sua quantidade
        Assunto.objects.update(qtd=F('qtd')+1)
        assunto_obj = assuntos[0]
    else:

        assunto_obj = Assunto(descricao=assunto, hash=hash, qtd=1)
        assunto_obj.save()

    # Joga o Hash do assunto cagado na Session
    cagadas.append(hash)
    request.session['cagadas'] = ','.join(cagadas)

    # Log do IP client que deu a cagada na URL
    log = Log(cagada_id=assunto_obj.id, tipo='A', ip=request.META['REMOTE_ADDR'])
    log.save()

    return HttpResponse(simplejson.dumps({'tipo':'SUCCESS', 'msg':'Você e + %s pessoas cagaram para isso.' % assunto_obj.qtd if assuntos else 'Você acaba de dar uma nova cagada. Parabéns!', 'assunto': {'id': assunto_obj.id, 'qtd': assunto_obj.qtd}}), content_type="application/json; charset=UTF-8")
Ejemplo n.º 3
0
def cagar(request):
    # Hash da URL
    url = request.POST['url']
    hash = hashlib.md5(url.lower()).hexdigest()

    # Verifica se usuário já cagou na URL
    cagadas = request.session.get('cagadas').split(',') if request.session.get(
        'cagadas') else []
    if cagadas.count(hash):
        return HttpResponse(simplejson.dumps({
            'tipo':
            'ERROR',
            'msg':
            'Você já cagou para essa URL.'
        }),
                            content_type="application/json; charset=UTF-8")

    # Verifica se foi atingida a QTD máxima de cagadas por hora (máximo de 100 cagadas)
    data_ultima_hora = datetime.now() - timedelta(hours=1)
    qtd = Log.objects.filter(ip=request.META['REMOTE_ADDR'],
                             data__gt=data_ultima_hora).count()
    if qtd > 100:
        return HttpResponse(simplejson.dumps({
            'tipo':
            'ERROR',
            'msg':
            'Você atingiu a quantidade máxima de cagadas por hora.'
        }),
                            content_type="application/json; charset=UTF-8")

    # Verifica se a URL já foi cagada alguma vez
    urls = Url.objects.filter(hash=hash)

    if urls:
        # Se a URL já foi cagada alguma vez, basta somar + 1 a sua quantidade
        Url.objects.update(qtd=F('qtd') + 1)
        url_obj = urls[0]
    else:
        # Se a URL nunca foi cagada, verifica se a mesma é válida
        try:
            #page = urllib2.urlopen(url, timeout=3)
            page = urllib2.urlopen(url)
            content = page.read()
        except Exception, e:
            # Se a URL informada for inválida, é necessário logar a ação desse IP, afim de evitar um ataque com URLs inválidas, que será bloqueado com a verificação de QTD máxima de cagadas por hora
            log = Log(cagada_id=0, tipo='E', ip=request.META['REMOTE_ADDR'])
            log.save()
            return HttpResponse(simplejson.dumps({
                'tipo':
                'ERROR',
                'msg':
                'A URL informada não é válida.'
            }),
                                content_type="application/json; charset=UTF-8")

        # Faz um parser no documento HTML afim de recuperar o title e o description
        document = BeautifulSoup(content)

        try:
            titulo = document.head.title.string
        except Exception, e:
            titulo = 'Não encontrado'
Ejemplo n.º 4
0
def cagar_assunto(request):
    # Hash do assunto
    assunto = request.POST['assunto']
    hash = hashlib.md5(assunto.lower()).hexdigest()

    # Verifica se usuário já cagou para o assunto
    cagadas = request.session.get('cagadas').split(',') if request.session.get(
        'cagadas') else []
    if cagadas.count(hash):
        return HttpResponse(simplejson.dumps({
            'tipo':
            'ERROR',
            'msg':
            'Você já cagou para esse assunto.'
        }),
                            content_type="application/json; charset=UTF-8")

    # Verifica se foi atingida a QTD máxima de cagadas por hora (máximo de 100 cagadas)
    data_ultima_hora = datetime.now() - timedelta(hours=1)
    qtd = Log.objects.filter(ip=request.META['REMOTE_ADDR'],
                             data__gt=data_ultima_hora).count()
    if qtd > 100:
        return HttpResponse(simplejson.dumps({
            'tipo':
            'ERROR',
            'msg':
            'Você atingiu a quantidade máxima de cagadas por hora.'
        }),
                            content_type="application/json; charset=UTF-8")

    # Verifica se o assunto já foi cagada alguma vez
    assuntos = Assunto.objects.filter(hash=hash)

    if assuntos:
        # Se o assunto já foi cagado alguma vez, basta somar + 1 a sua quantidade
        Assunto.objects.update(qtd=F('qtd') + 1)
        assunto_obj = assuntos[0]
    else:

        assunto_obj = Assunto(descricao=assunto, hash=hash, qtd=1)
        assunto_obj.save()

    # Joga o Hash do assunto cagado na Session
    cagadas.append(hash)
    request.session['cagadas'] = ','.join(cagadas)

    # Log do IP client que deu a cagada na URL
    log = Log(cagada_id=assunto_obj.id,
              tipo='A',
              ip=request.META['REMOTE_ADDR'])
    log.save()

    return HttpResponse(simplejson.dumps({
        'tipo':
        'SUCCESS',
        'msg':
        'Você e + %s pessoas cagaram para isso.' % assunto_obj.qtd
        if assuntos else 'Você acaba de dar uma nova cagada. Parabéns!',
        'assunto': {
            'id': assunto_obj.id,
            'qtd': assunto_obj.qtd
        }
    }),
                        content_type="application/json; charset=UTF-8")
Ejemplo n.º 5
0
        except Exception, e:
            descricao = 'Não encontrado'

        url_obj = Url(titulo=titulo,
                      descricao=descricao,
                      url=url,
                      hash=hash,
                      qtd=1)
        url_obj.save()

    # Joga o Hash da URL cagada na Session
    cagadas.append(hash)
    request.session['cagadas'] = ','.join(cagadas)

    # Log do IP client que deu a cagada na URL
    log = Log(cagada_id=url_obj.id, tipo='U', ip=request.META['REMOTE_ADDR'])
    log.save()

    return HttpResponse(simplejson.dumps({
        'tipo':
        'SUCCESS',
        'msg':
        'Você e + %s pessoas cagaram para isso.' % url_obj.qtd
        if urls else 'Você acaba de dar uma nova cagada. Parabéns!',
        'url': {
            'id': url_obj.id,
            'qtd': url_obj.qtd
        }
    }),
                        content_type="application/json; charset=UTF-8")
Ejemplo n.º 6
0
            titulo = 'Não encontrado'

        try:
            descricao = document.find('meta', {'name':'description'}).get('content')
        except Exception, e:
            descricao = 'Não encontrado'

        url_obj = Url(titulo=titulo, descricao=descricao, url=url, hash=hash, qtd=1)
        url_obj.save()

    # Joga o Hash da URL cagada na Session
    cagadas.append(hash)
    request.session['cagadas'] = ','.join(cagadas)
    
    # Log do IP client que deu a cagada na URL
    log = Log(cagada_id=url_obj.id, tipo='U', ip=request.META['REMOTE_ADDR'])
    log.save()
    
    return HttpResponse(simplejson.dumps({'tipo':'SUCCESS', 'msg':'Você e + %s pessoas cagaram para isso.' % url_obj.qtd if urls else 'Você acaba de dar uma nova cagada. Parabéns!', 'url': {'id': url_obj.id, 'qtd': url_obj.qtd}}), content_type="application/json; charset=UTF-8")

def url_detalhe(request, url_id):
    url_obj = get_object_or_404(Url, pk=url_id)

    # Verifica se usuário já cagou na URL
    cagadas = request.session.get('cagadas').split(',') if request.session.get('cagadas') else []
    url_obj.caguei = True if cagadas.count(url_obj.hash) else False

    now = datetime.now()

    return render_to_response('url-detalhe.html', {'url':url_obj, 'now':now})