If your data is not confidential, any chance you send me your application?

To me this looks like corrupted data in database as if the password field 
was at some pointed treated as type='list:string' and than changed back to 
type='password'. Is it possible?

Massimo

On Wednesday, 19 December 2012 11:28:15 UTC-6, Wonton wrote:
>
> Yes, of course. This is my ticket:
>
> Error ticket for "dianaappv1" Ticket ID 
>
> 127.0.0.1.2012-12-19.18-24-12.5d2b292c-7e9a-4281-a9f7-bb9aa17bbd0c
> <type 'exceptions.ValueError'> unsupported hash type 
> |pbkdf2(1000,20,sha512) Versión  web2py™ (2, 2, 1, 
> datetime.datetime(2012, 10, 21, 16, 57, 4), 'stable')  Python Python 
> 2.7.1: /usr/bin/python  Traceback 
>
> 1.
> 2.
> 3.
> 4.
> 5.
> 6.
> 7.
> 8.
> 9.
> 10.
> 11.
> 12.
> 13.
> 14.
> 15.
> 16.
> 17.
> 18.
> 19.
> 20.
> 21.
> 22.
> 23.
> 24.
> 25.
> 26.
> 27.
> 28.
>
> Traceback (most recent call last):
>   File "/Applications/web2py/gluon/restricted.py", line 212, in restricted
>     exec ccode in environment
>   File "/Applications/web2py/applications/dianaappv1/controllers/default.py" 
> <https://127.0.0.1:8000/admin/default/edit/dianaappv1/controllers/default.py>,
>  line 101, in <module>
>   File "/Applications/web2py/gluon/globals.py", line 188, in <lambda>
>     self._caller = lambda f: f()
>   File "/Applications/web2py/applications/dianaappv1/controllers/default.py" 
> <https://127.0.0.1:8000/admin/default/edit/dianaappv1/controllers/default.py>,
>  line 27, in public_call
>     return servicios_publicos()
>   File "/Applications/web2py/gluon/tools.py", line 4387, in __call__
>     return self.serve_json(request.args[1:])
>   File "/Applications/web2py/gluon/tools.py", line 4197, in serve_json
>     s = universal_caller(self.json_procedures[args[0]], *args[1:], **d)
>   File "/Applications/web2py/gluon/tools.py", line 3889, in universal_caller
>     return f(**arg_dict)
>   File "/Applications/web2py/applications/dianaappv1/controllers/default.py" 
> <https://127.0.0.1:8000/admin/default/edit/dianaappv1/controllers/default.py>,
>  line 65, in login
>     user = auth.login_bare(usuario, password)
>   File "/Applications/web2py/gluon/tools.py", line 1789, in login_bare
>     if not user.registration_key and password == user[passfield]:
>   File "/Applications/web2py/gluon/validators.py", line 2636, in __eq__
>     h = simple_hash(self.password, key, salt, digest_alg)
>   File "/Applications/web2py/gluon/utils.py", line 74, in simple_hash
>     h = hashlib.new(digest_alg)
>   File 
> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
>  line 121, in __hash_new
>     return __get_builtin_constructor(name)(string)
>   File 
> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
>  line 88, in __get_builtin_constructor
>     raise ValueError('unsupported hash type %s' % name)
> ValueError: unsupported hash type |pbkdf2(1000,20,sha512)
>
>  Error snapshot [image: help]  
>
> <type 'exceptions.ValueError'>(unsupported hash type 
> |pbkdf2(1000,20,sha512)) 
>
> inspect attributes 
>  Frames 
>    
>    -  
>    
>    *File /Applications/web2py/gluon/restricted.py in restricted at line 
>    212* código argumentos variables 
>     -  
>    
>    *File 
>    /Applications/web2py/applications/dianaappv1/controllers/default.py in 
>    <module> at line 101* código argumentos variables 
>     -  
>    
>    *File /Applications/web2py/gluon/globals.py in <lambda> at line 188* 
>    código argumentos variables 
>     -  
>    
>    *File 
>    /Applications/web2py/applications/dianaappv1/controllers/default.py in 
>    public_call at line 27* código argumentos variables 
>     -  
>    
>    *File /Applications/web2py/gluon/tools.py in __call__ at line 4387* 
>    código argumentos variables 
>     -  
>    
>    *File /Applications/web2py/gluon/tools.py in serve_json at line 4197* 
>    código argumentos variables 
>     -  
>    
>    *File /Applications/web2py/gluon/tools.py in universal_caller at line 
>    3889* código argumentos variables 
>     -  
>    
>    *File 
>    /Applications/web2py/applications/dianaappv1/controllers/default.py in 
>    login at line 65* código argumentos variables 
>     -  
>    
>    *File /Applications/web2py/gluon/tools.py in login_bare at line 1789* 
>    código argumentos variables 
>     -  
>    
>    *File /Applications/web2py/gluon/validators.py in __eq__ at line 2636* 
>    código argumentos variables 
>     -  
>    
>    *File /Applications/web2py/gluon/utils.py in simple_hash at line 74* 
>    código argumentos variables 
>     -  
>    
>    *File 
>    
> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py
>  
>    in __hash_new at line 121* código argumentos variables 
>     -  
>    
>    *File 
>    
> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py
>  
>    in __get_builtin_constructor at line 88* código argumentos variables 
>     Function argument list 
>    
>    (name='|pbkdf2(1000,20,sha512)')
>     Code listing 
>    
>    83.
>    84.
>    85.
>    86.
>    87.
>    88.
>    
>    89.
>    90.
>    91.
>    92.
>    
>            if bs == '512':
>                return _sha512.sha512
>            elif bs == '384':
>                return _sha512.sha384
>    
>        raise ValueError('unsupported hash type %s' % name)
>    
>    
>    
>    def __get_openssl_constructor(name):
>        try:
>    
>     Variables  name '|pbkdf2(1000,20,sha512)'  builtinValueError <type 
>    'exceptions.ValueError'>  
>     
>  Context 
>
> locals request session response 
>  In file: 
> /Applications/web2py/applications/dianaappv1/controllers/default.py 
>
> 1.
> 2.
> 3.
> 4.
> 5.
> 6.
> 7.
> 8.
> 9.
> 10.
> 11.
> 12.
> 13.
> 14.
> 15.
> 16.
> 17.
> 18.
> 19.
> 20.
> 21.
> 22.
> 23.
> 24.
> 25.
> 26.
> 27.
> 28.
> 29.
> 30.
> 31.
> 32.
> 33.
> 34.
> 35.
> 36.
> 37.
> 38.
> 39.
> 40.
> 41.
> 42.
> 43.
> 44.
> 45.
> 46.
> 47.
> 48.
> 49.
> 50.
> 51.
> 52.
> 53.
> 54.
> 55.
> 56.
> 57.
> 58.
> 59.
> 60.
> 61.
> 62.
> 63.
> 64.
> 65.
> 66.
> 67.
> 68.
> 69.
> 70.
> 71.
> 72.
> 73.
> 74.
> 75.
> 76.
> 77.
> 78.
> 79.
> 80.
> 81.
> 82.
> 83.
> 84.
> 85.
> 86.
> 87.
> 88.
> 89.
> 90.
> 91.
> 92.
> 93.
> 94.
> 95.
> 96.
> 97.
> 98.
> 99.
> 100.
> 101.
> 102.
>
> # -*- coding: utf-8 -*-
> # this file is released under public domain and you can use without 
> limitations
>
> #########################################################################
> ## This is a samples controller
> ## - index is the default action of any application
> ## - user is required for authentication and authorization
> ## - download is for downloading files uploaded in the db (does streaming)
> ## - call exposes all registered services (none by default)
> #########################################################################
> servicios_publicos=Service()
> servicios_privados=Service()
>
> def random_password():
>     import string
>     import random
>     password = ''
>     specials=r'!...@#$*?'
>     for i in range(0,2):
>         password += random.choice(string.lowercase)
>         password += random.choice(string.uppercase)
>         password += random.choice(string.digits)
> #        password += random.choice(specials)
>     return ''.join(random.sample(password,len(password)))
>
> def public_call(): 
>     return servicios_publicos()
>
> @auth.requires_login()
> def private_call(): 
>     return servicios_privados()
>
> @servicios_publicos.json
> def registra(usuario, email, password):
>     respuesta = {}
>     estado = 'OK'
>     mensaje = ''
>     tipoError = 0
>     #Comprueba si hay otro usuario con el mismo nombre
>     if db(db.auth_user.username == usuario).count() != 0:
>         estado = 'Error'
>         tipoError = 1
>     #Comprueba si hay otro usuario con el mismo email
>     if db(db.auth_user.email == email).count() != 0:
>         estado = 'Error'
>         tipoError = tipoError + 2
>     #Registrar
>     if estado == 'OK':
>         db.auth_user.insert(username=usuario, email=email, 
> password=db.auth_user.password.validate(password)) 
>         mensaje = 'El registro se ha realizado correctamente.'
>     else:
>         if tipoError == 1:
>             mensaje = 'El usuario ya existe.'
>         elif tipoError == 2:
>             mensaje = 'El email ya existe.'
>         else:
>             mensaje = 'El usuario y el email ya existen.'
>     respuesta['estado'] = estado    
>     respuesta['mensaje'] = mensaje
>     return respuesta
>
> @servicios_publicos.json
> def login(usuario, password):
>     respuesta = {}
>     user = auth.login_bare(usuario, password)
>     if not user:
>         respuesta['estado'] = 'Error'    
>         respuesta['mensaje'] = 'Nombre de usuario o contraseña incorrecta'
>     else:
>         respuesta['estado'] = 'OK'    
>         respuesta['mensaje'] = 'Login correcto'
>     return respuesta
>
> @servicios_publicos.json
> def recupera_contrasenya(usuario):
>     nueva_contrasenya = random_password()
>     respuesta = {}
>     fila = db(db.auth_user.username == usuario)
>     if fila.count() == 0:
>         respuesta['estado'] = 'Error'    
>         respuesta['mensaje'] = 'No existe el usuario'
>     else:
>         
> fila.update(password=db.auth_user.password.validate(nueva_contrasenya))
>         datosFila = fila.select()
>         destino = datosFila[0].email
>         enviado = mail.send(to=[destino],
>           subject='Recuperación de contraseña',
>           message='Se te ha creado una nueva contraseña. Es esta ' + 
> nueva_contrasenya)
>         if enviado:
>             respuesta['estado'] = 'OK'    
>             respuesta['mensaje'] = 'Se ha enviado la contraseña a su correo 
> electrónico.'
>         else:
>             respuesta['estado'] = 'Error'    
>             respuesta['mensaje'] = 'La contraseña no se ha podido enviar, 
> reinténtelo más tarde'
>     return respuesta
>
> #@servicios_privados.json
> #def metodo_privado(): 
> #    return 'private'
>
> response 
> <https://127.0.0.1:8000/examples/global/vars/response>._vars=response 
> <https://127.0.0.1:8000/examples/global/vars/response>._caller(public_call)
>
>
>
> El miércoles, 19 de diciembre de 2012 18:09:25 UTC+1, Massimo Di Pierro 
> escribió:
>>
>> Can you please show me the complete traceback?
>> I cannot reproduce this and I this error is not generated from a web2py 
>> function.
>>
>> On Tuesday, 18 December 2012 11:11:51 UTC-6, Massimo Di Pierro wrote:
>>>
>>> Can I see you models? Are you changing the validator for 
>>> db.auth_user.password?
>>> Your error says:
>>>
>>> <type 'exceptions.ValueError'> unsupported hash type 
>>> |pbkdf2(1000,20,sha512)
>>>
>>> I do not understand where | in  |pbkdf2 would come from.
>>>
>>>
>>> On Tuesday, 18 December 2012 09:33:12 UTC-6, Wonton wrote:
>>>>
>>>> Hi Massimo!!
>>>>
>>>> I'm using version 2.2.1 (2012-10-21 16:57:04) stable. I dowloaded it 
>>>> last week.
>>>>
>>>> El martes, 18 de diciembre de 2012 16:26:29 UTC+1, Massimo Di Pierro 
>>>> escribió:
>>>>>
>>>>> Which web2py version? The error suggests you are using an older web2py 
>>>>> version with newly created database of records.
>>>>>
>>>>> Massimo
>>>>>
>>>>> On Monday, 17 December 2012 14:59:02 UTC-6, Wonton wrote:
>>>>>>
>>>>>> Hello everyone,
>>>>>>
>>>>>> I'm developing a backend site with web2py. I have 2 web services, one 
>>>>>> to register a user and a second one to login the user.
>>>>>> This is the first one:
>>>>>>
>>>>>> def register(user, email, password):
>>>>>>      db.auth_user.insert(username=user, email=email, 
>>>>>> password=db.auth_user.password.validate(password)) 
>>>>>>     ...
>>>>>>      return 'OK'
>>>>>>
>>>>>> It's working ok and the users are created without problem.
>>>>>>
>>>>>> This is the second one:
>>>>>>
>>>>>> def login(user, password):
>>>>>>     response = auth.login_bare(user, password)
>>>>>>      if not response:
>>>>>>         message = 'Error'
>>>>>>     else:
>>>>>>          message = 'OK'
>>>>>>    return message
>>>>>>
>>>>>> With this service I have the following error:
>>>>>> <type 'exceptions.ValueError'> unsupported hash type 
>>>>>> |pbkdf2(1000,20,sha512)
>>>>>>
>>>>>> I've tried to find any solution to this problem without success.
>>>>>>
>>>>>> Any of you has any idea of what is happening?
>>>>>>
>>>>>> Thank you very much and kind regards!
>>>>>>
>>>>>> Wonton
>>>>>>
>>>>>

-- 



Reply via email to