Beispiel #1
0
    def test_previous_solution_incorrect(self):
        client = RecaptchaClient(_FAKE_PRIVATE_KEY, _FAKE_PUBLIC_KEY)
        urls = client._get_challenge_urls(
            was_previous_solution_incorrect=True,
            use_ssl=False,
        )

        javascript_challenge_url = urls['javascript_challenge_url']
        javascript_challenge_url_components = \
            urlparse(javascript_challenge_url)
        javascript_challenge_url_query = parse_qs(
            javascript_challenge_url_components.query,
        )

        self.assertIn('error', javascript_challenge_url_query)
        self.assertEqual(
            'incorrect-captcha-sol',
            javascript_challenge_url_query['error'][0]
        )

        noscript_challenge_url = urls['noscript_challenge_url']
        noscript_challenge_url_components = urlparse(noscript_challenge_url)
        self.assertEqual(
            javascript_challenge_url_components.query,
            noscript_challenge_url_components.query
        )
Beispiel #2
0
    def test_ssl_not_required(self):
        client = RecaptchaClient(_FAKE_PRIVATE_KEY, _FAKE_PUBLIC_KEY)
        urls = client._get_challenge_urls(False, use_ssl=True)

        javascript_challenge_url = urls['javascript_challenge_url']
        self.assertTrue(javascript_challenge_url.startswith('https://'))

        noscript_challenge_url = urls['noscript_challenge_url']
        self.assertTrue(noscript_challenge_url.startswith('https://'))
Beispiel #3
0
    def test_invalid_private_key(self):
        client = RecaptchaClient(_FAKE_PRIVATE_KEY, _FAKE_PUBLIC_KEY)

        correct_response = "false\ninvalid-site-private-key"
        self.urlopen_mock.return_value = MockResponse(correct_response)

        with self.assertRaises(RecaptchaInvalidPrivateKeyError):
            result = client.is_solution_correct(
                _FAKE_SOLUTION_TEXT,
                _FAKE_CHALLENGE_ID,
                _RANDOM_REMOTE_IP
            )
Beispiel #4
0
    def test_invalid_challenge(self):
        client = RecaptchaClient(_FAKE_PRIVATE_KEY, _FAKE_PUBLIC_KEY)

        correct_response = "false\ninvalid-request-cookie"
        self.urlopen_mock.return_value = MockResponse(correct_response)

        with self.assertRaises(RecaptchaInvalidChallengeError):
            result = client.is_solution_correct(
                _FAKE_SOLUTION_TEXT,
                _FAKE_CHALLENGE_ID,
                _RANDOM_REMOTE_IP
            )
Beispiel #5
0
    def test_ssl_required(self):
        client = RecaptchaClient(_FAKE_PRIVATE_KEY, _FAKE_PUBLIC_KEY)
        urls = client._get_challenge_urls(False, use_ssl=False)

        javascript_challenge_url = urls['javascript_challenge_url']

        self.assertTrue(
            javascript_challenge_url.startswith(_RECAPTCHA_API_URL)
        )

        noscript_challenge_url = urls['noscript_challenge_url']
        self.assertTrue(noscript_challenge_url.startswith(_RECAPTCHA_API_URL))
Beispiel #6
0
    def test_solution_correct(self):
        client = RecaptchaClient(_FAKE_PRIVATE_KEY, _FAKE_PUBLIC_KEY)

        correct_response = "true"
        self.urlopen_mock.return_value = MockResponse(correct_response)

        result = client.is_solution_correct(
            _FAKE_SOLUTION_TEXT,
            _FAKE_CHALLENGE_ID,
            _RANDOM_REMOTE_IP
        )

        self.assertTrue(result)
Beispiel #7
0
def submit_term():
    s = request.session
    if "termsendid" not in s:
        print "Invalid form term submit!"
        print str(s)
        return "<b>Invalid form</b>"
    ref = request.headers.get('Referer')
    term = request.forms.get('term').decode()
    info = request.forms.get('info').decode()
    email = request.forms.get('email').decode()
    captcha_term = request.forms.get('recaptcha_response_field').decode()
    captcha_id = request.forms.get('recaptcha_challenge_field').decode()
    client_ip = str(request.headers.get('X-Forwarded-For'))
    recaptcha_client = RecaptchaClient(RECAPTCHA_PRIVKEY, RECAPTCHA_PUBKEY)
    captcha_response = None
    try:
        is_solution_correct = recaptcha_client.is_solution_correct(
            captcha_term, captcha_id, client_ip)
    except Exception as exc:
        print "reCaptcha exception: ", str(exc)
        captcha_response = False
    else:
        if is_solution_correct:
            print "reCaptcha channalnge was OK!", term, info, email, client_ip
            Mailer(
                'uj mimoxindex term', '\nTerm name: ' + term + '\nInfo: ' +
                info + "\nBekuldo: " + email + "\nclient IP: " + client_ip,
                "*****@*****.**", TERM_EMAIL_RECPS)
            captcha_response = True
        else:
            print "reCaptcha channalnge was false!", term, info, email, client_ip
            captcha_response = False
    if ref:
        if ref.startswith("http://mimoxindex.com") or ref.startswith(
                "http://www.mimoxindex.com/"):
            if captcha_response:
                s["captcha_challange"] = "OK"
                s.save()
                redirect("http://www.mimoxindex.com/?searchterm=" + term +
                         "&termsendid=" + s["termsendid"])
            else:
                s["captcha_challange"] = "NOK"
                s.save()
                redirect("http://www.mimoxindex.com/?searchterm=" + term +
                         "&termsendid=" + s["termsendid"])
Beispiel #8
0
    def test_url_paths(self):
        client = RecaptchaClient(_FAKE_PRIVATE_KEY, _FAKE_PUBLIC_KEY)
        urls = client._get_challenge_urls(
            was_previous_solution_incorrect=False,
            use_ssl=False,
        )

        javascript_challenge_url = urls['javascript_challenge_url']
        javascript_challenge_url_components = \
            urlparse(javascript_challenge_url)

        noscript_challenge_url = urls['noscript_challenge_url']
        noscript_challenge_url_components = urlparse(noscript_challenge_url)

        self.assertNotEqual(
            javascript_challenge_url_components.path,
            noscript_challenge_url_components.path,
        )
Beispiel #9
0
    def test_public_key_inclusion(self):
        client = RecaptchaClient(_FAKE_PRIVATE_KEY, _FAKE_PUBLIC_KEY)
        urls = client._get_challenge_urls(False, False)

        javascript_challenge_url = urls['javascript_challenge_url']
        javascript_challenge_url_components = \
            urlparse(javascript_challenge_url)

        javascript_challenge_url_query = parse_qs(
            javascript_challenge_url_components.query,
        )

        self.assertIn('k', javascript_challenge_url_query)
        self.assertEqual(
            client.public_key,
            javascript_challenge_url_query['k'][0]
        )

        noscript_challenge_url = urls['noscript_challenge_url']
        noscript_challenge_url_components = urlparse(noscript_challenge_url)
        self.assertEqual(
            javascript_challenge_url_components.query,
            noscript_challenge_url_components.query,
        )
from django.core.urlresolvers import reverse, reverse_lazy
from django.contrib import messages as messages
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.forms import AuthenticationForm
from recaptcha import RecaptchaClient
from django_recaptcha_field import create_form_subclass_with_recaptcha

from portal.models import Teacher, Class, Student
from portal.forms.teach_new import TeacherSignupForm, TeacherLoginForm
from portal.forms.play_new import StudentLoginForm, IndependentStudentLoginForm, StudentSignupForm
from portal.helpers.emails_new import send_verification_email, is_verified
from portal.utils import using_two_factor
from portal import app_settings
from ratelimit.decorators import ratelimit

recaptcha_client = RecaptchaClient(app_settings.RECAPTCHA_PRIVATE_KEY,
                                   app_settings.RECAPTCHA_PUBLIC_KEY)


def teach_email_labeller(request):
    if request.method == 'POST' and 'login' in request.POST:
        return request.POST['login-teacher_email']

    return ''


def play_name_labeller(request):
    if request.method == 'POST':
        if 'school_login' in request.POST:
            return request.POST['login-name'] + ':' + request.POST[
                'login-access_code']
# INFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
#
################################################################################

from os import environ

from recaptcha import RecaptchaClient

__all__ = [
    'FAKE_RECAPTCHA_CLIENT',
    'RANDOM_CHALLENGE_ID',
    'RANDOM_REMOTE_IP',
    'RANDOM_SOLUTION_TEXT',
    'setup',
    'teardown',
]

FAKE_RECAPTCHA_CLIENT = RecaptchaClient('private key', 'public_key')

RANDOM_SOLUTION_TEXT = 'hello world'
RANDOM_CHALLENGE_ID = 'abcde'
RANDOM_REMOTE_IP = '192.0.2.0'


def setup():
    environ['DJANGO_SETTINGS_MODULE'] = 'tests.django_settings'


def teardown():
    del environ['DJANGO_SETTINGS_MODULE']
Beispiel #12
0
from model.user import User
from model.skill import Skill
from gaesessions import get_current_session
from model.third_party_login_data import ThirdPartyLoginData
from recaptcha import RecaptchaClient
from google.appengine.api import memcache
from google.appengine.ext import blobstore

HIREPIRATES_RECAPTCHA_PUBLIC_KEY = '6LcyMggTAAAAAHLKAfeOIooqXQ-1Lo4mJ_366q4E'
HIREPIRATES_RECAPTCHA_PRIVATE_KEY = '6LcyMggTAAAAAIvXBKsOHu6t8qmgMmeKkZJel1G1'

MINYATTRA_RECAPTCHA_PUBLIC_KEY = '6LeA6PwSAAAAAOeT-mnBNsppSoKgygqv1xqChz2s'
MINYATTRA_RECAPTCHA_PRIVATE_KEY = '6LeA6PwSAAAAAB9Wv1qmmnxnsZySbb8nQwdqUvbv'

recaptcha_client = RecaptchaClient(HIREPIRATES_RECAPTCHA_PRIVATE_KEY,
                                   HIREPIRATES_RECAPTCHA_PUBLIC_KEY,
                                   recaptcha_options={'theme': 'clean'})

startups = 'startups'
projects = 'projects'

registration_breadcrumbs = {
    startups: [('Get started', 'Tell us about your startup'),
               ('Build your team', 'Invite members'),
               ('Help us learn more about you', 'Access data')],
    projects: [('Get started', 'Tell us about your project'),
               ('Add skills', 'Choose skills required')]
}

separator = '::'
Beispiel #13
0
                                page += "<b><font color=\"red\">Sikertelen reCaptcha ellenőrzés (challange error), kérjük próbáld újra!</font></b><br /><br />"
                                need_new_recaptcha = True
                            else:
                                page += "<b>Sikertelen reCaptcha challange (ID), kérjük próbáld újra!</b><br />"
                                need_new_recaptcha = True
                        else:
                            page += "<b>Sikeretelen adatküldés (reCaptcha ellenőrzés) kérjük próbáld újra.</b><br />"
                            need_new_recaptcha = True
                    else:
                        page += "<b>Sikeretelen oldalküldés (session ID), kérjük próbáld újra.</b><br />"
                        need_form = False
                else:
                    page += "<b>Sikeretelen oldalküldés (POST, URL ID), kérjük próbáld újra.</b><br />"
                    need_form = False
            if need_form:
                recaptcha_client = RecaptchaClient(RECAPTCHA_PRIVKEY,
                                                   RECAPTCHA_PUBKEY)
                if need_new_recaptcha:
                    rec = recaptcha_client.get_challenge_markup()
                else:
                    rec = recaptcha_client.get_challenge_markup(
                        was_previous_solution_incorrect=True)
                s["termsendid"] = str(uuid.uuid4())
                s.save()
                page += '<tr><td colspan="5">Sikertelen keresés: <b>\'' + searchterm + '\'</b><br /><br />Sajnos nincs találat. Ez valószínűleg azt jelenti, hogy vagy nem ismerjük, és ezért nem követjük még. Kisebb százalékban előfordulhat, hogy ismerjük, hallottunk róla, de valamiért úgy döntöttönk, hogy nem vesszük be a listába. Pl. azokat a kifejezéseket, amik inkább jelentenek cégneveket, termékneveket és nem technológiákat, kihúztuk, illetve olyanokat is, mint a HTML, mivel túl sok találat lenne rá, és nem annyira releváns. (A html5 viszont szerepel.) Amennyiben úgy gondolod, hogy jó lenne az általad keresett kifejezést is nyomonkövetnünk, kérjük tegyél javaslatot! Köszönjük!<br /><hr>'
                page += '''
				<form id="submit_term" action="./submit_term/" method="post">
				<table width="100%" border="0" cellpadding="2px" cellspacing="0">
				<input type="hidden" id="termsendid" name="termsendid" value="''' + s[
                    "termsendid"] + '''">
				<tr>
				  <td>Kifejezés:</td>