Esempio n. 1
0
    def get(self):
        challenge = self.request.get('recaptcha_challenge_field')
        response = self.request.get('recaptcha_response_field')
        remoteip = environ['REMOTE_ADDR']

        cResponse = captcha.submit(challenge, response,
                                   "6LcCYe8SAAAAAL4_401ToB3iSuJisouROiEs536m",
                                   remoteip)

        if cResponse.is_valid:
            # password = hashlib.hashlib.sha256(os.urandom(32) || [self.request.password | lookup_password_from_code(self.response.code)])
            badUser = NotVerUser.gql("WHERE code = :1",
                                     self.request.get('code')).get()
            if (badUser):
                goodUser = User(email=badUser.email,
                                password=badUser.password,
                                username=badUser.email,
                                salt=badUser.salt)
                goodUser.put()
                badUser.delete()
                # delete badUser at this stage
                self.response.write("THANKEES FOR REGISTERING " +
                                    goodUser.username)
                self.response.write(
                    """<form action="/loginweb" method="get"><input type="submit" value="Login"></form> """
                )
            else:
                self.response.write("No such unregistered user exists. Sorry!")

        else:
            error = cResponse.error_code
Esempio n. 2
0
File: auth.py Progetto: apit/rinjani
    def post(self):
        f = register_form()
        captcha_html = captcha.displayhtml(self.settings.CAPTCHA_PUBLIC_KEY, True)
        captcha_error = ''
        data = self.get_arguments()
        _ = self._
        if False and data.has_key('username'):
            existing_user = User.one({'username': data['username']})
            f.add_notnull_validator(not existing_user, "The username you wanted is already taken.")

        try:
            if f.validates(Storage(data)):
                #todo use async call 
                captcha_resp = captcha.submit(
                                    self.get_argument('recaptcha_challenge_field'),
                                    self.get_argument('recaptcha_response_field'),
                                    self.settings.CAPTCHA_PRIVATE_KEY,
                                    self.request.remote_ip
                                )
                if captcha_resp.is_valid:
                    new_user = User()
                    data['is_admin'] = False
                    data['password_hashed'] = unicode(hashlib.sha1(data['password']).hexdigest(), 'utf-8')
                    data['auth_provider'] = u'form'
                    new_user.save(data)
                    self.set_flash(_("You have been successfully registered. "))
                    self.redirect("/")
                    return
                captcha_error = captcha_resp.error_code
                raise Exception("Invalid captcha code") 
            raise InvalidFormDataError(_("Form still have errors."))
        except Exception, e:
            f.note = f.note if f.note else e
            self.render("register", f=f, captcha_html=captcha_html, captcha_error=captcha_error)
Esempio n. 3
0
    def get(self):
        challenge = self.request.get("recaptcha_challenge_field")
        response = self.request.get("recaptcha_response_field")
        remoteip = environ["REMOTE_ADDR"]

        cResponse = captcha.submit(challenge, response, "6LcCYe8SAAAAAL4_401ToB3iSuJisouROiEs536m", remoteip)

        if cResponse.is_valid:
            # password = hashlib.hashlib.sha256(os.urandom(32) || [self.request.password | lookup_password_from_code(self.response.code)])
            badUser = NotVerUser.gql("WHERE code = :1", self.request.get("code")).get()
            if badUser:
                goodUser = User(
                    email=badUser.email, password=badUser.password, username=badUser.email, salt=badUser.salt
                )
                goodUser.put()
                badUser.delete()
                # delete badUser at this stage
                self.response.write("THANKEES FOR REGISTERING " + goodUser.username)
                self.response.write(
                    """<form action="/loginweb" method="get"><input type="submit" value="Login"></form> """
                )
            else:
                self.response.write("No such unregistered user exists. Sorry!")

        else:
            error = cResponse.error_code
Esempio n. 4
0
 def clean(self, values):
     super(ReCaptchaField, self).clean(values[1])
     recaptcha_challenge_value = smart_unicode(values[0])
     recaptcha_response_value = smart_unicode(values[1])
     check_captcha = submit(recaptcha_challenge_value, recaptcha_response_value, settings.RECAPTCHA_PRIVATE_KEY, {})
     if not check_captcha.is_valid:
         raise forms.util.ValidationError(self.error_messages['captcha_invalid'])
     return values[0]
Esempio n. 5
0
 def clean(self, values):
     super(ReCaptchaField, self).clean(values[1])
     recaptcha_challenge_value = smart_unicode(values[0])
     recaptcha_response_value = smart_unicode(values[1])
     check_captcha = captcha.submit(recaptcha_challenge_value,
                                    recaptcha_response_value, settings.RECAPTCHA_PRIVATE_KEY, {})
     if not check_captcha.is_valid:
         raise forms.util.ValidationError(self.error_messages['captcha_invalid'])
     return values[0]
Esempio n. 6
0
    def clean(self, values):
        from django.utils.encoding import smart_unicode
        from recaptcha import captcha

        super(ReCaptchaField, self).clean(values[1])
        recaptcha_challenge_value = smart_unicode(values[0])
        recaptcha_response_value = smart_unicode(values[1])
        check_captcha = captcha.submit(recaptcha_challenge_value,
            recaptcha_response_value, Option.objects.get(key='recaptcha_private_key').value, {})
        if not check_captcha.is_valid:
            raise forms.util.ValidationError(self.error_messages['captcha_invalid'])
        return values[0]
Esempio n. 7
0
def verify_captcha(sender, comment, request, **kwargs):
	challenge_field = request.POST.get('recaptcha_challenge_field')
	response_field = request.POST.get('recaptcha_response_field')
	client = request.META['REMOTE_ADDR']
	
	check_captcha = captcha.submit(challenge_field, response_field,
		settings.RECAPTCHA_PRIVATE_KEY, client)
		
	if check_captcha.is_valid is False:
		return False
		
	return True
Esempio n. 8
0
def comment(request, post_id):

    # Try to get the post page
    try:
        page_dict = gen_post(post_id)
        if page_dict["post"].comments_enable == False:
            return HttpResponseRedirect('/post/'+post_id)
    except:
        raise Http404
    
    if request.method == 'POST':
        try:
            p = Post.objects.get(id=post_id)

            # Check the form captcha. If not good, pass the template an error code
            captcha_response = captcha.submit(
                request.POST.get("recaptcha_challenge_field", None),
                request.POST.get("recaptcha_response_field", None),
                RECAPTCHA_PRV_KEY,
                request.META.get("REMOTE_ADDR", None)
                )
            
            page_dict['comment_errors'] = ""

            if request.POST['name'] == "":
                page_dict['comment_errors'] += "Name can not be blank. "
            if len(request.POST['name']) > MAX_COMMENT_NAME_LEN:
                page_dict['comment_errors'] += "Name exceeds maximum length of "+str(MAX_COMMENT_NAME_LEN)+" characters. "
            if request.POST['body'] == "":
                page_dict['comment_errors'] += "Comment can not be blank. "
            if len(request.POST['body']) > MAX_COMMENT_LEN:
                page_dict['comment_errors'] += "Comment exceeds maximum length of "+str(MAX_COMMENT_LEN)+" characters. "
            if captcha_response.is_valid == False:
                page_dict['comment_errors'] +=  "Human verification failed. "

            if page_dict['comment_errors'] == "":
                name_fix = ''.join(ch for ch in request.POST['name'] if ch.isalnum())
                c = Comment(post=p,
                            name=name_fix,
                            body=request.POST['body'],
                            hide=False,
                            pub_date=datetime.datetime.fromtimestamp(time.time()-28800))
                c.save()
                return HttpResponseRedirect('/post/'+post_id+'/#'+str(c.pk))
            else:
                page_dict['comment_error_name'] = request.POST['name']
                page_dict['comment_error_body'] = request.POST['body']
                return render_to_response('post.html', page_dict, context_instance=RequestContext(request))
        except:
            raise Http404
        
    return HttpResponseRedirect('/post/'+post_id)
Esempio n. 9
0
    def post(self):
        f = register_form()
        captcha_html = captcha.displayhtml(self.settings.CAPTCHA_PUBLIC_KEY,
                                           True)
        captcha_error = ''
        data = self.get_arguments()
        _ = self._
        if False and data.has_key('username'):
            existing_user = User.one({'username': data['username']})
            f.add_notnull_validator(
                not existing_user, "The username you wanted is already taken.")

        try:
            if f.validates(Storage(data)):
                #todo use async call
                captcha_resp = captcha.submit(
                    self.get_argument('recaptcha_challenge_field'),
                    self.get_argument('recaptcha_response_field'),
                    self.settings.CAPTCHA_PRIVATE_KEY, self.request.remote_ip)
                if captcha_resp.is_valid:
                    new_user = User()
                    data['is_admin'] = False
                    data['password_hashed'] = unicode(
                        hashlib.sha1(data['password']).hexdigest(), 'utf-8')
                    data['auth_provider'] = u'form'
                    new_user.save(data)
                    self.set_flash(
                        _("You have been successfully registered. "))
                    self.redirect("/")
                    return
                captcha_error = captcha_resp.error_code
                raise Exception("Invalid captcha code")
            raise InvalidFormDataError(_("Form still have errors."))
        except Exception, e:
            f.note = f.note if f.note else e
            self.render("register",
                        f=f,
                        captcha_html=captcha_html,
                        captcha_error=captcha_error)
    def execute(self):
        method = self.request.method
        if method == 'GET':
            self.send_form(None)
        else:
            if self.get_param('x'):
                # check if nickname is available
                nickname = self.request.get('nickname')
                email = self.request.get('email')
                message = self.validate_nickname(nickname)
                if message:
                    self.render_json({'valid': False, 'message': message})
                else:
                    self.render_json({'valid': True})
                return
            else:
                # Validate captcha
                challenge = self.request.get('recaptcha_challenge_field')
                response = self.request.get('recaptcha_response_field')
                remoteip = environ['REMOTE_ADDR']

                cResponse = captcha.submit(
                    challenge, response,
                    self.get_application().recaptcha_private_key, remoteip)

                if not cResponse.is_valid:
                    # If the reCAPTCHA server can not be reached,
                    # the error code recaptcha-not-reachable will be returned.
                    self.send_form(cResponse.error_code)
                    return

                nickname = self.request.get('nickname')
                email = self.request.get('email')
                password = self.request.get('password')
                re_email = self.request.get('re_email')
                re_password = self.request.get('re_password')

                if not self.get_param('terms-and-conditions'):
                    self.show_error(
                        nickname, email,
                        u'Debes aceptar los términos y condiciones del servicio'
                    )
                    return

                if not re.match(
                        '^[\w\.-]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}$',
                        email):
                    self.show_error(nickname, email,
                                    'Introduce una dirección de email válida')
                    return

                if not re.match('^[\w\.-]+$', nickname):
                    self.show_error(
                        nickname, email,
                        u'El nombre de usuario sólo puede contener letras, números, puntos, guiones y guiones bajos'
                    )
                    return

                if not password or len(password) < 4 or len(password) > 30:
                    self.show_error(
                        nickname, email,
                        u'La contraseña debe ser de entre cuatro y treinta caracteres'
                    )
                    return
                message = self.validate_nickname(nickname)
                if message:
                    self.show_error(nickname, email, message)
                    return

                u = model.UserData.all().filter('email =', email).get()
                if u:
                    self.show_error(
                        nickname, email,
                        u'Ya existe una cuenta con esa dirección de correo electrónico'
                    )
                    return

                if email != re_email:
                    self.show_error(
                        nickname, email,
                        'El e-mail y el e-mail repetido no son iguales')
                    return

                if password != re_password:
                    self.show_error(
                        nickname, email,
                        u'La contraseña y la contraseña repetida no son iguales'
                    )
                    return

                    times = 5

                user = model.UserData(nickname=nickname,
                                      email=email,
                                      password=self.hash_password(
                                          nickname, password),
                                      items=0,
                                      draft_items=0,
                                      messages=0,
                                      draft_messages=0,
                                      comments=0,
                                      rating_count=0,
                                      rating_total=0,
                                      rating_average=0,
                                      threads=0,
                                      responses=0,
                                      groups=0,
                                      favourites=0,
                                      public=False,
                                      contacts=0)
                user.put()

                app = model.Application.all().get()
                if app:
                    app.users += 1
                    app.put()
                memcache.delete('app')

                #send welcome email
                app = self.get_application()
                subject = "Bienvenido a debug_mode=ON"
                body = u"""
Gracias por registrarte en debug_mode=ON. El equipo de debug_mode=ON te damos la bienvenida.

Completa tu perfil con tu información 
%s/user.edit

Publica artículos, ¡puedes ganar dinero!. 
Informaté en http://www.debugmodeon.com/item/5674/como-anadir-adsense-a-tus-articulos

Forma parte de los grupos que te interesan. Cada grupo tiene un foro, para compartir o debatir con las personas a las que les interese lo mismo que a ti.
Listado de grupos %s/group.list
Listado de hilos %s/forum.list

Sugerencias, opiniones, nos gustaría tener tu feedback 
http://www.debugmodeon.com/group.forum/9240/debug-mode-on/opiniones-sugerencias-feedback-general

Para más información tenemos una sección de FAQ
%s/html/faq.html

Atentamente,

El equipo de debug_mode=ON.

""" % (app.url, app.url, app.url, app.url)
                self.mail(subject=subject, body=body, to=[user.email])
                self.sess.store(str(user.key()), 7200)
                rt = self.request.get('redirect_to')
                if not rt:
                    rt = '/'
                self.redirect(rt)
Esempio n. 11
0
    def execute(self):
        method = self.request.method
        if method == 'GET':
            self.send_form(None)
        else:
            if self.get_param('x'):
                # check if nickname is available
                nickname = self.request.get('nickname')
                email = self.request.get('email')
                message = self.validate_nickname(nickname)
                if message:
                    self.render_json({'valid': False, 'message': message})
                else:
                    self.render_json({'valid': True})
                return
            else:
                # Validate captcha
                challenge = self.request.get('recaptcha_challenge_field')
                response = self.request.get('recaptcha_response_field')
                remoteip = environ['REMOTE_ADDR']

                cResponse = captcha.submit(
                    challenge, response,
                    self.get_application().recaptcha_private_key, remoteip)

                if not cResponse.is_valid:
                    # If the reCAPTCHA server can not be reached,
                    # the error code recaptcha-not-reachable will be returned.
                    self.send_form(cResponse.error_code)
                    return

                nickname = self.request.get('nickname')
                email = self.request.get('email')
                password = self.request.get('password')
                re_email = self.request.get('re_email')
                re_password = self.request.get('re_password')

                if not self.get_param('terms-and-conditions'):
                    self.show_error(nickname, email,
                                    "You must accept terms and conditions")
                    return

                if not re.match(
                        '^[\w\.-]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}$',
                        email):
                    self.show_error(nickname, email, "Enter a valid mail")
                    return

                if not re.match('^[\w\.-]+$', nickname):
                    self.show_error(
                        nickname, email,
                        "Username can contain letters, numbers, dots, hyphens and underscores"
                    )
                    return

                if not password or len(password) < 4 or len(password) > 30:
                    self.show_error(
                        nickname, email,
                        "Password must contain between 4 and 30 chars")
                    return
                message = self.validate_nickname(nickname)
                if message:
                    self.show_error(nickname, email, message)
                    return

                u = model.UserData.all().filter('email =', email).get()
                if u:
                    self.show_error(nickname, email,
                                    "This mail already exists")
                    return

                if email != re_email:
                    self.show_error(nickname, email,
                                    "Mail and validation mail are not equals")
                    return

                if password != re_password:
                    self.show_error(
                        nickname, email,
                        "New password and validation password are not equal")
                    return

                    times = 5

                user = model.UserData(nickname=nickname,
                                      email=email,
                                      password=self.hash_password(
                                          nickname, password),
                                      articles=0,
                                      draft_articles=0,
                                      messages=0,
                                      draft_messages=0,
                                      comments=0,
                                      rating_count=0,
                                      rating_total=0,
                                      rating_average=0,
                                      threads=0,
                                      responses=0,
                                      communities=0,
                                      favourites=0,
                                      public=False,
                                      contacts=0)
                user.registrationType = 0  #local identifier
                user.put()

                app = model.Application.all().get()
                if app:
                    app.users += 1
                    app.put()
                memcache.delete('app')

                #send welcome email
                app = self.get_application()
                subject = self.getLocale("Welcome to %s") % app.name
                bt = "Thanks for signing in %s. %s team welcome you to our social network. \n\nComplete your profile \n%s/module/user.edit\n\nPublish articles, \n\n\nBe part of the communities that interest you. Each community has a forum to share or discuss with people to whom the same interests as you.\nCommunities list %s/module/community.list\nThread list %s/forum.list\n\n\n\nFor futher information check our FAQ page\n%s/html/faq.html\n\nBest regards,\n\n%s Team."
                body = self.getLocale(bt) % (app.name, app.name, app.url,
                                             app.url, app.url, app.url,
                                             app.name)
                self.mail(subject=subject, body=body, to=[user.email])
                self.sess.store(str(user.key()), 7200)
                rt = self.request.get('redirect_to')
                if not rt:
                    rt = '/'
                self.redirect(rt)
	def execute(self):
		method = self.request.method
		if method == 'GET':
			self.send_form(None)
		else:
			if self.get_param('x'):
				# check if nickname is available
				nickname = self.request.get('nickname')
				email = self.request.get('email')
				message = self.validate_nickname(nickname)
				if message:
					self.render_json({'valid': False, 'message': message})
				else :
					self.render_json({'valid': True })
				return
			else:
				# Validate captcha
				challenge = self.request.get('recaptcha_challenge_field')
				response  = self.request.get('recaptcha_response_field')
				remoteip  = environ['REMOTE_ADDR']

				cResponse = captcha.submit(
					challenge,
					response,
					self.get_application().recaptcha_private_key,
					remoteip)

				if not cResponse.is_valid:
					# If the reCAPTCHA server can not be reached, 
					# the error code recaptcha-not-reachable will be returned.
					self.send_form(cResponse.error_code)
					return
				
				nickname = self.request.get('nickname')
				email = self.request.get('email')
				password = self.request.get('password')
				re_email = self.request.get('re_email')
				re_password = self.request.get('re_password')

				if not self.get_param('terms-and-conditions'):
					self.show_error(nickname, email, u'Debes aceptar los términos y condiciones del servicio')
					return
			
				if not re.match('^[\w\.-]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}$', email):
					self.show_error(nickname, email, 'Introduce una dirección de email válida')
					return

				if not re.match('^[\w\.-]+$', nickname):
					self.show_error(nickname, email, u'El nombre de usuario sólo puede contener letras, números, puntos, guiones y guiones bajos')
					return

				if not password or len(password) < 4 or len(password) > 30:
					self.show_error(nickname, email, u'La contraseña debe ser de entre cuatro y treinta caracteres')
					return
				message = self.validate_nickname(nickname)
				if message:
					self.show_error(nickname, email, message)
					return
			
				u = model.UserData.all().filter('email =', email).get()
				if u:
					self.show_error(nickname, email, u'Ya existe una cuenta con esa dirección de correo electrónico')
					return
				
				if email != re_email:
					self.show_error(nickname, email, 'El e-mail y el e-mail repetido no son iguales')
					return
				
				if password != re_password:
					self.show_error(nickname, email, u'La contraseña y la contraseña repetida no son iguales')
					return
			
					times = 5
			
				user = model.UserData(nickname=nickname,
					email=email,
					password=self.hash_password(nickname, password),
					items=0,
					draft_items=0,
					messages=0,
					draft_messages=0,
					comments=0,
					rating_count=0,
					rating_total=0,
					rating_average=0,
					threads=0,
					responses=0,
					groups=0,
					favourites=0,
					public=False,
					contacts=0)
				user.put()
				
				app = model.Application.all().get()
				if app:
					app.users += 1
					app.put()
				memcache.delete('app')

				#send welcome email
				app = self.get_application()
				subject = "Bienvenido a debug_mode=ON"
				body = u"""
Gracias por registrarte en debug_mode=ON. El equipo de debug_mode=ON te damos la bienvenida.

Completa tu perfil con tu información 
%s/user.edit

Publica artículos, ¡puedes ganar dinero!. 
Informaté en http://www.debugmodeon.com/item/5674/como-anadir-adsense-a-tus-articulos

Forma parte de los grupos que te interesan. Cada grupo tiene un foro, para compartir o debatir con las personas a las que les interese lo mismo que a ti.
Listado de grupos %s/group.list
Listado de hilos %s/forum.list

Sugerencias, opiniones, nos gustaría tener tu feedback 
http://www.debugmodeon.com/group.forum/9240/debug-mode-on/opiniones-sugerencias-feedback-general

Para más información tenemos una sección de FAQ
%s/html/faq.html

Atentamente,

El equipo de debug_mode=ON.

""" % (app.url, app.url, app.url, app.url)
				self.mail(subject=subject, body=body, to=[user.email])
				self.sess.store(str(user.key()), 7200)
				rt = self.request.get('redirect_to')
				if not rt:
					rt = '/'
				self.redirect(rt)
Esempio n. 13
0
	def execute(self):
		method = self.request.method
		if method == 'GET':
			self.send_form(None)
		else:
			if self.get_param('x'):
				# check if nickname is available
				nickname = self.request.get('nickname')
				email = self.request.get('email')
				message = self.validate_nickname(nickname)
				if message:
					self.render_json({'valid': False, 'message': message})
				else :
					self.render_json({'valid': True })
				return
			else:
				# Validate captcha
				challenge = self.request.get('recaptcha_challenge_field')
				response  = self.request.get('recaptcha_response_field')
				remoteip  = environ['REMOTE_ADDR']

				cResponse = captcha.submit(
					challenge,
					response,
					self.get_application().recaptcha_private_key,
					remoteip)

				if not cResponse.is_valid:
					# If the reCAPTCHA server can not be reached, 
					# the error code recaptcha-not-reachable will be returned.
					self.send_form(cResponse.error_code)
					return
				
				nickname = self.request.get('nickname')
				email = self.request.get('email')
				password = self.request.get('password')
				re_email = self.request.get('re_email')
				re_password = self.request.get('re_password')

				if not self.get_param('terms-and-conditions'):
					self.show_error(nickname, email, "You must accept terms and conditions" )
					return
			
				if not re.match('^[\w\.-]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}$', email):
					self.show_error(nickname, email, "Enter a valid mail" )
					return

				if not re.match('^[\w\.-]+$', nickname):
					self.show_error(nickname, email,  "Username can contain letters, numbers, dots, hyphens and underscores" )
					return

				if not password or len(password) < 4 or len(password) > 30:
					self.show_error(nickname, email,  "Password must contain between 4 and 30 chars" )
					return
				message = self.validate_nickname(nickname)
				if message:
					self.show_error(nickname, email, message)
					return
			
				u = model.UserData.all().filter('email =', email).get()
				if u:
					self.show_error(nickname, email,  "This mail already exists" )
					return
				
				if email != re_email:
					self.show_error(nickname, email,  "Mail and validation mail are not equals" )
					return
				
				if password != re_password:
					self.show_error(nickname, email,  "New password and validation password are not equal" )
					return
			
					times = 5
			
				user = model.UserData(nickname=nickname,
					email=email,
					password=self.hash_password(nickname, password),
					articles=0,
					draft_articles=0,
					messages=0,
					draft_messages=0,
					comments=0,
					rating_count=0,
					rating_total=0,
					rating_average=0,
					threads=0,
					responses=0,
					communities=0,
					favourites=0,
					public=False,
					contacts=0)
				user.registrationType = 0#local identifier
				user.put()
				
				app = model.Application.all().get()
				if app:
					app.users += 1
					app.put()
				memcache.delete('app')

				#send welcome email
				app = self.get_application()
				subject = self.getLocale("Welcome to %s") % app.name
				bt = "Thanks for signing in %s. %s team welcome you to our social network. \n\nComplete your profile \n%s/module/user.edit\n\nPublish articles, \n\n\nBe part of the communities that interest you. Each community has a forum to share or discuss with people to whom the same interests as you.\nCommunities list %s/module/community.list\nThread list %s/forum.list\n\n\n\nFor futher information check our FAQ page\n%s/html/faq.html\n\nBest regards,\n\n%s Team."
				body = self.getLocale(bt) % (app.name, app.name, app.url, app.url, app.url, app.url, app.name)
				self.mail(subject=subject, body=body, to=[user.email])
				self.sess.store(str(user.key()), 7200)
				rt = self.request.get('redirect_to')
				if not rt:
					rt = '/'
				self.redirect(rt)