Hi Fahar, Please log the case on redmine. Please find the attached patch, please apply it locally, and test it.
And, please update the case, and this mail chain accordingly. -- Thanks & Regards, Ashesh Vashi EnterpriseDB INDIA: Enterprise PostgreSQL Company <http://www.enterprisedb.com> *http://www.linkedin.com/in/asheshvashi* <http://www.linkedin.com/in/asheshvashi> On Wed, Oct 19, 2016 at 3:47 PM, Fahar Abbas <fahar.ab...@enterprisedb.com> wrote: > Here is the output of if we copy config_local.py and execute python > setup.py > pgAdmin 4 - Application Initialisation > ====================================== > > > The configuration database - '/home/fahar/.pgadmin/pgadmin4.db' does not > exist. > Entering initial setup mode... > NOTE: Configuring authentication for SERVER mode. > > > Enter the email address and password to use for the initial pgAdmin > user account: > > Email address: fahar.ab...@enterprisedb.com > Password: > Retype password: > Traceback (most recent call last): > File "setup.py", line 449, in <module> > do_setup(app) > File "setup.py", line 96, in do_setup > password = encrypt_password(p1) > File "/home/fahar/venv/lib/python3.5/site-packages/flask_security/utils.py", > line 150, in encrypt_password > signed = get_hmac(password).decode('ascii') > File "/home/fahar/venv/lib/python3.5/site-packages/flask_security/utils.py", > line 108, in get_hmac > 'set to "%s"' % _security.password_hash) > RuntimeError: The configuration value `SECURITY_PASSWORD_SALT` must not be > None when the value of `SECURITY_PASSWORD_HASH` is set to "pbkdf2_sha512" > python setup.py > pgAdmin 4 - Application Initialisation > ====================================== > > User can not do any setup for web based now. > > > The configuration database - '/home/fahar/.pgadmin/pgadmin4.db' does not > exist. > Entering initial setup mode... > NOTE: Configuring authentication for SERVER mode. > > > Enter the email address and password to use for the initial pgAdmin > user account: > > Email address: fahar.ab...@enterprisedb.com > Password: > Retype password: > Traceback (most recent call last): > File "setup.py", line 449, in <module> > do_setup(app) > File "setup.py", line 96, in do_setup > password = encrypt_password(p1) > File "/home/fahar/venv/lib/python3.5/site-packages/flask_security/utils.py", > line 150, in encrypt_password > signed = get_hmac(password).decode('ascii') > File "/home/fahar/venv/lib/python3.5/site-packages/flask_security/utils.py", > line 108, in get_hmac > 'set to "%s"' % _security.password_hash) > RuntimeError: The configuration value `SECURITY_PASSWORD_SALT` must not be > None when the value of `SECURITY_PASSWORD_HASH` is set to "pbkdf2_sha512" > > On Wed, Oct 19, 2016 at 3:03 PM, Fahar Abbas <fahar.ab...@enterprisedb.com > > wrote: > >> Dave, >> >> Testing Environment >> >> Ubuntu 16.04 Linux 64: >> -------------------------------- >> >> pg-AdminIV Development Environment Setup for Ubuntu : >> >> >> 1) Install GIT >> >> sudo apt-get install git >> >> 2) Install pip3 >> >> sudo apt-get install python3-pip >> >> 3) Install virtualenv >> >> sudo pip3 install virtualenv >> >> 4) install below dependency as it is required for psycopg2 & pycrypto >> module >> >> sudo apt-get install libpq-dev >> >> sudo apt-get install python3-dev >> >> 5) Create virtual environment >> >> virtualenv -p python3 venv >> >> 6) Create mkdir Projects >> >> 7) Clone git repo in Projects >> >> git clone http://git.postgresql.org/git/pgadmin4.git >> >> 8) activate virtual environment >> >> source venv/bin/activate >> >> 9) Install modules >> >> pip3 install -r requirements_py3.txt >> >> *10) Edit the config.py file to config_local.py resides in >> Projects\pgAdmin4\web * >> >> 11)Now run setup.py file (\Projects\pgAdmin4\web) >> python setup.py >> >> If user does not create config_local.py and do Python setup.py for new >> Development then SECURITY_PASSWORD_SALT message is also displayed: >> >> Here is the output: >> ------------------------- >> >> python setup.py >> pgAdmin 4 - Application Initialisation >> ====================================== >> >> >> The configuration database - '/home/fahar/.pgadmin/pgadmin4.db' does not >> exist. >> Entering initial setup mode... >> NOTE: Configuring authentication for SERVER mode. >> >> >> Enter the email address and password to use for the initial pgAdmin >> user account: >> >> Email address: fahar.ab...@enterprisedb.com >> Password: >> Retype password: >> Traceback (most recent call last): >> File "setup.py", line 449, in <module> >> do_setup(app) >> File "setup.py", line 96, in do_setup >> password = encrypt_password(p1) >> File >> "/home/fahar/venv/lib/python3.5/site-packages/flask_security/utils.py", >> line 150, in encrypt_password >> signed = get_hmac(password).decode('ascii') >> File >> "/home/fahar/venv/lib/python3.5/site-packages/flask_security/utils.py", >> line 108, in get_hmac >> 'set to "%s"' % _security.password_hash) >> RuntimeError: The configuration value `SECURITY_PASSWORD_SALT` must not >> be None when the value of `SECURITY_PASSWORD_HASH` is set to "pbkdf2_sha512" >> (venv) fahar@fahar-virtual-machine:~/Projects/pgadmin4/web$ >> >> >> Is this expected? >> >> On Wed, Oct 19, 2016 at 1:37 PM, Fahar Abbas < >> fahar.ab...@enterprisedb.com> wrote: >> >>> Sure, >>> >>> Will test this thoroughly after complete investigation. >>> >>> Kind Regards, >>> >>> On Wed, Oct 19, 2016 at 1:27 PM, Dave Page <dp...@pgadmin.org> wrote: >>> >>>> Patch applied. >>>> >>>> Fahar, can you please test this thoroughly in desktop and server modes, >>>> with both fresh and upgraded installations? >>>> >>>> https://redmine.postgresql.org/issues/1849 >>>> >>>> Packagers: This change means that packages are no longer forced to >>>> create a config_local.py file, and there is no longer any need to >>>> explicitly set SECURITY_PASSWORD_SALT, SECURITY_KEY >>>> and CSRF_SESSION_KEY in the config (in fact, they should be removed for new >>>> installations, if you have included them in 1.0) >>>> >>>> Thanks. >>>> >>>> >>>> On Wed, Oct 19, 2016 at 6:46 AM, Ashesh Vashi < >>>> ashesh.va...@enterprisedb.com> wrote: >>>> >>>>> Hi Dave, >>>>> >>>>> On Sat, Oct 15, 2016 at 8:02 AM, Dave Page <dp...@pgadmin.org> wrote: >>>>> >>>>>> Hi >>>>>> >>>>>> >>>>>> On Friday, October 14, 2016, Dave Page <dp...@pgadmin.org> wrote: >>>>>> >>>>>>> Hi >>>>>>> >>>>>>> On Thursday, October 13, 2016, Ashesh Vashi < >>>>>>> ashesh.va...@enterprisedb.com> wrote: >>>>>>> >>>>>>>> Hi Dave, >>>>>>>> >>>>>>>> On Tue, Oct 11, 2016 at 9:10 PM, Dave Page <dp...@pgadmin.org> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Hi Ashesh, >>>>>>>>> >>>>>>>>> Can you please review the attached patch, and apply if you're >>>>>>>>> happy with it? >>>>>>>>> >>>>>>>> Overall the patch looked good to me. >>>>>>>> But - I encounter an issue in 'web' mode, which wont happen with >>>>>>>> 'runtime'. >>>>>>>> >>>>>>>> Steps for reproduction on existing pgAdmin 4 environment with 'web' >>>>>>>> mode. >>>>>>>> - Apply the patch >>>>>>>> - Start the pgAdmin4 application (stand alone application). >>>>>>>> - Open pgAdmin home page. >>>>>>>> - Log out (if already login). >>>>>>>> >>>>>>>> And, you will see an exception. >>>>>>>> >>>>>>>> I have figure out the issue with the patch. >>>>>>>> We were setting the SECURITY_PASSWORD_SALT, after initializing the >>>>>>>> Security object. >>>>>>>> Hence - it could not set the SECURITY_KEY, and >>>>>>>> SECURITY_PASSWORD_SALT properly. >>>>>>>> >>>>>>> >>>>>>> Hmm. >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> I had moved the Security object initialization after fetching these >>>>>>>> configurations from the database. >>>>>>>> I have attached a addon patch for the same. >>>>>>>> >>>>>>> >>>>>>> OK, thanks. >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> Now - I run into another issue. >>>>>>>> Because - the existing password was hashed using the old >>>>>>>> SECURITY_PASSWORD_SALT, I am no more able to login to pgAdmin 4. >>>>>>>> >>>>>>>> I think - we need to think about different strategy for upgrading >>>>>>>> the configuration file in the 'web' mode. >>>>>>>> I was thinking - we can store the existing security configurations >>>>>>>> in the database during upgrade process in 'web' mode. >>>>>>>> >>>>>>> >>>>>>> My concern with that is that we'll likely be storing the default >>>>>>> config values in many cases, thus for those users, perpetuating the >>>>>>> problem. >>>>>>> >>>>>>> I guess what we need to do is re-encrypt the password during the >>>>>>> upgrade - however, that makes me think; we then have both the key and >>>>>>> the >>>>>>> encrypted passwords in the same database which is clearly not a good >>>>>>> idea. >>>>>>> Sigh... Needs more thought. >>>>>>> >>>>>> >>>>>> OK, so I've been thinking about this and experimenting for a couple >>>>>> of hours, as well as annoying the crap out of Magnus by thinking out loud >>>>>> in his general direction, and it looks like this isn't a major problem as >>>>>> from what I can see, SECURITY_PASSWORD_SALT is (aside from really being >>>>>> a >>>>>> key not a salt) not the only salting that's done. >>>>>> >>>>>> It looks like it's used system-wide as the key to generate an HMAC of >>>>>> the users password, which is then passed to passlib which salts and >>>>>> hashes >>>>>> it. I did some testing, and found that two users with the same password >>>>>> end >>>>>> up with different hashes in the database, so clearly there is also >>>>>> per-user >>>>>> salting happening. I also created two users, then dropped the database >>>>>> and >>>>>> created the same user accounts with the same passwords again, and found >>>>>> that the resulting hashes were different in both databases - thus there >>>>>> is >>>>>> something else ensuring the hashes are unique across different >>>>>> installations/databases. >>>>>> >>>>>> So, I believe we can do as you suggest and migrate existing values >>>>>> for SECURITY_PASSWORD_SALT, given that there's clearly some other per >>>>>> user >>>>>> and per installation/database salting going on anyway. New installations >>>>>> can have the random value for SECURITY_PASSWORD_SALT. >>>>>> >>>>> We do not need to generate the random SECURITY_PASSWORD_SALT during >>>>> upgrade mode, which was wrong added in my addon patch. >>>>> >>>>> Please find the updated patch. >>>>> >>>>> Otherwise - looks good to me. >>>>> Please commit the new patch (if you're ok with the change). >>>>> >>>>> >>>>> -- >>>>> >>>>> Thanks & Regards, >>>>> >>>>> Ashesh Vashi >>>>> EnterpriseDB INDIA: Enterprise PostgreSQL Company >>>>> <http://www.enterprisedb.com/> >>>>> >>>>> >>>>> *http://www.linkedin.com/in/asheshvashi* >>>>> <http://www.linkedin.com/in/asheshvashi> >>>>> >>>>>> >>>>>> I don't believe SECURITY_KEY and CSRF_SESSION_KEY are issues either, >>>>>> as they're used for purposes that are essentially ephemeral, and thus can >>>>>> be changed during an upgrade. >>>>>> >>>>>> Adding Magnus as I'd appreciate any thoughts he may have. >>>>>> >>>>>> Patch attached - please review (Ashesh, but others too would be >>>>>> appreciated)! >>>>>> >>>>>> Thanks. >>>>>> >>>>>> >>>>>> -- >>>>>> Dave Page >>>>>> Blog: http://pgsnake.blogspot.com >>>>>> Twitter: @pgsnake >>>>>> >>>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>>> The Enterprise PostgreSQL Company >>>>>> >>>>>> >>>>> >>>> >>>> >>>> -- >>>> Dave Page >>>> Blog: http://pgsnake.blogspot.com >>>> Twitter: @pgsnake >>>> >>>> EnterpriseDB UK: http://www.enterprisedb.com >>>> The Enterprise PostgreSQL Company >>>> >>> >>> >>> >>> -- >>> Syed Fahar Abbas >>> Quality Management Group >>> >>> EnterpriseDB Corporation >>> Phone Office: +92-51-835-8874 >>> Phone Direct: +92-51-8466803 >>> Mobile: +92-333-5409707 >>> Skype ID: syed.fahar.abbas >>> Website: www.enterprisedb.com >>> >> >> >> >> -- >> Syed Fahar Abbas >> Quality Management Group >> >> EnterpriseDB Corporation >> Phone Office: +92-51-835-8874 >> Phone Direct: +92-51-8466803 >> Mobile: +92-333-5409707 >> Skype ID: syed.fahar.abbas >> Website: www.enterprisedb.com >> > > > > -- > Syed Fahar Abbas > Quality Management Group > > EnterpriseDB Corporation > Phone Office: +92-51-835-8874 > Phone Direct: +92-51-8466803 > Mobile: +92-333-5409707 > Skype ID: syed.fahar.abbas > Website: www.enterprisedb.com >
reload_config_setup.patch
Description: Binary data
-- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers