If you don't mind I could send you my project to your email directly.

El jueves, 20 de diciembre de 2012 16:14:12 UTC+1, Massimo Di Pierro 
escribió:
>
> 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