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