Thanks, patch applied.

On Wed, Jun 28, 2017 at 12:19 AM, Khushboo Vashi <
khushboo.va...@enterprisedb.com> wrote:

> Hi,
>
> Please find the attached patch which will fix the password
> encryption/decryption for python3.
> I have modified the fix suggested by Ladislav to work with both python2
> and python3.
>
> Thanks,
> Khushboo
>
>
> On Tue, Jun 27, 2017 at 4:41 PM, Ladislav Jech <archenr...@gmail.com>
> wrote:
>
>> Hi,
>> It will be good if you support fully github or any GIT repository for
>> managing pull requests. Is there any or you wan't me to generate *.patch
>> file? I am new to pgadmin 4, so not sure how this works. Let me know.
>> Ladislav
>>
>> 2017-06-27 11:52 GMT+02:00 Khushboo Vashi <khushboo.vashi@enterprisedb.c
>> om>:
>>
>>> Hi,
>>>
>>> Can you send the patch for the same. I think this is the valid fix.
>>>
>>> Thanks,
>>> Khushboo
>>>
>>> On Tue, Jun 27, 2017 at 3:02 PM, Ladislav Jech <archenr...@gmail.com>
>>> wrote:
>>>
>>>> I am running on following Gentoo system with Python 3.5 as default
>>>> (although i have 2.7 and 3.4 available to switch as well).
>>>>
>>>> I compiled from source code via github:
>>>> commit 15cb9fc35b41736a331a452b9303a79e8f13ee36 (HEAD -> master,
>>>> origin/master, origin/HEAD)
>>>>
>>>> The error appears when I want to click on Save while adding new server
>>>> to the list, I put few lines into the code to detect the times:
>>>> 2017-06-27 13:21:48,329: DEBUG pgadmin: Not running under the desktop
>>>> runtime, port: 5050
>>>> Starting pgAdmin 4. Please navigate to http://127.0.0.1:5050 in your
>>>> browser.
>>>> str var python type is <class 'str'>
>>>> str var object's type is str
>>>> padding_string var python type is <class 'bytes'>
>>>> padding_string var object's type is bytes
>>>> 2017-06-27 13:21:53,028: ERROR pgadmin: Can't convert 'bytes' object
>>>> to str implicitly
>>>> Traceback (most recent call last):
>>>>   File 
>>>> "/home/zangetsu/devel/tmp/pgadmin4/web/pgadmin/browser/server_groups/servers/__init__.py",
>>>> line 619, in create
>>>>     password = encrypt(password, current_user.password)
>>>>   File "/home/zangetsu/devel/tmp/pgadmin4/web/pgadmin/utils/crypto.py",
>>>> line 31, in encrypt
>>>>     cipher = AES.new(pad(key), AES.MODE_CFB, iv)
>>>>   File "/home/zangetsu/devel/tmp/pgadmin4/web/pgadmin/utils/crypto.py",
>>>> line 80, in pad
>>>>     return str + ((32 - len(str) % 32) * padding_string)
>>>> TypeError: Can't convert 'bytes' object to str implicitly
>>>> 2017-06-27 13:21:53,031: INFO werkzeug: 127.0.0.1 - - [27/Jun/2017
>>>> 13:21:53] "POST /browser/server/obj/2/ HTTP/1.1" 410 -
>>>> 2017-06-27 13:22:49,936: INFO werkzeug: * Detected change in
>>>> '/home/zangetsu/devel/tmp/pgadmin4/web/pgadmin/utils/crypto.py',
>>>> reloading
>>>> 2017-06-27 13:22:50,138: INFO werkzeug: * Restarting with reloader
>>>>
>>>> So this is the error:
>>>> Can't convert 'bytes' object to str implicitly
>>>>
>>>> To fix this on Python 3.5 I simply changed in
>>>> pgadmin4/web/pgadmin/utils/crypto.py file this line:
>>>> return str + ((32 - len(str) % 32) * padding_string)
>>>> to
>>>> return str + ((32 - len(str) % 32) * padding_string.decode())
>>>>
>>>> Another solution could be to change whole str into bytes. Not sure what
>>>> is better, but now it works.
>>>>
>>>
>>>
>>
>


-- 
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

Reply via email to