Subject: Experiencing issues

From: Joao De Almeida Pereira <[email-masked]>
Date: Wed, 21 Mar 2018 14:11:01 +0000

Hello Hackers,
Can anyone use the current master branch?
When I try to open a server I get a 428. Is that only me?

Thanks
Joao

---

From: Dave Page <[email-masked]>
Date: Wed, 21 Mar 2018 14:16:18 +0000

> When I try to open a server I get a 428. Is that only me?

Both ssh and https seem to be working fine for me.

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

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

---

From: Khushboo Vashi <[email-masked]>
Date: Wed, 21 Mar 2018 19:46:19 +0530

On 21 Mar 2018 19:41, "Joao De Almeida Pereira" <
[email-masked]> wrote:

Hello Hackers,

May be because of cookie changes.
Check your config.py and config_local.py if you have done changes related
to DEFAULT_SERVER in your config_local.py then you need to change other 2
cookie related variables also.

Thanks
Joao

---

From: Joao De Almeida Pereira <[email-masked]>
Date: Wed, 21 Mar 2018 14:25:09 +0000

Where can I find information about that?

---

From: Dave Page <[email-masked]>
Date: Wed, 21 Mar 2018 14:25:12 +0000

> cookie related variables also.

Oh, I thought Joao meant he was having problems using the master branch on
the git server :-)

---

From: Murtuza Zabuawala <[email-masked]>
Date: Wed, 21 Mar 2018 19:59:49 +0530

Yes, that's cookie related issue (RM#3197), To fix that I added below in my
config_local.py and it started working again,

DEFAULT_SERVER = '0.0.0.0'
COOKIE_DEFAULT_DOMAIN = SESSION_COOKIE_DOMAIN = DEFAULT_SERVER

Clear your browser cookies and server side sessions.

--
Regards,
Murtuza Zabuawala
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

---

From: Joao De Almeida Pereira <[email-masked]>
Date: Wed, 21 Mar 2018 14:31:25 +0000

I tried that but still nothing. When i check in the inspector for cookies I
have none

On Wed, Mar 21, 2018 at 10:30 AM Murtuza Zabuawala <
[email-masked]> wrote:

> Yes, that's cookie related issue (RM#3197), To fix that I added below in
> my config_local.py and it started working again,
>
>>> Check your config.py and config_local.py if you have done changes
>>> related to DEFAULT_SERVER in your config_local.py then you need to change
>>> other 2 cookie related variables also.
>>>
>>> Thanks
>>> Joao
>>>
>>>
>>>
>

---

From: Dave Page <[email-masked]>
Date: Wed, 21 Mar 2018 14:32:09 +0000

> COOKIE_DEFAULT_DOMAIN = SESSION_COOKIE_DOMAIN = DEFAULT_SERVER

I haven't had to do that - and the 3.0 packages I just built for Windows
and Mac worked fine on fresh VMs without anything like that being needed.

---

From: Khushboo Vashi <[email-masked]>
Date: Wed, 21 Mar 2018 20:06:30 +0530

On 21 Mar 2018 20:02, "Dave Page" <[email-masked]> wrote:

On Wed, Mar 21, 2018 at 2:29 PM, Murtuza Zabuawala <murtuza.zabuawala@

These changes required when you change DEFAULT_SERVER in config_local.py

---

From: Murtuza Zabuawala <[email-masked]>
Date: Wed, 21 Mar 2018 20:07:37 +0530

Have you cleared server side sessions?
rm -rf ~/.pgadmin/sessions/

Make sure to access it with same name as mentioned via DEFAULT_SERVER.

if you have DEFAULT_SERVER = '0.0.0.0'
then http://0.0.0.0:5050

and if you have DEFAULT_SERVER = '127.0.0.1'
then http://127.0.0.1:5050

On Wed, Mar 21, 2018 at 8:01 PM, Joao De Almeida Pereira <
[email-masked]> wrote:

> I tried that but still nothing. When i check in the inspector for cookies
> I have none
>
> On Wed, Mar 21, 2018 at 10:30 AM Murtuza Zabuawala <murtuza.zabuawala@
> enterprisedb.com> wrote:
>

---

From: Joao De Almeida Pereira <[email-masked]>
Date: Wed, 21 Mar 2018 14:37:54 +0000

Also when I see the request I get a different cookie session id for each
request

See the the attachments. I am using Ubuntu machine

On Wed, Mar 21, 2018 at

---

From: Khushboo Vashi <[email-masked]>
Date: Wed, 21 Mar 2018 20:09:13 +0530

On 21 Mar 2018 20:01, "Joao De Almeida Pereira" <
[email-masked]> wrote:

Share your config_local file.

---

From: Joao De Almeida Pereira <[email-masked]>
Date: Wed, 21 Mar 2018 14:40:15 +0000

Ok Murtuza you are right,
Now my question is I have the default server to 127.0.0.1 and I want to
access it using localhost as well. How can I do this?

---

From: Khushboo Vashi <[email-masked]>
Date: Wed, 21 Mar 2018 20:25:22 +0530

On Wed, Mar 21, 2018 at 8:10 PM, Joao De Almeida Pereira <
[email-masked]> wrote:

> No, you can't.
Domain based cookie will work for that domain and it's sub-domains.

---

From: Joao De Almeida Pereira <[email-masked]>
Date: Wed, 21 Mar 2018 14:57:47 +0000

So what you are saying is that if I have a server, I need to do
DEFAULT_SERVER=0.0.0.0 and then set the real domain on the COOKIE domain?

On Wed, Mar 21, 2018 at 10:55 AM Khushboo Vashi <
[email-masked]> wrote:

>>> I tried that but still nothing. When i check in the inspector for
>>> cookies I have none
>>>
>>>> Yes, that's cookie related issue (RM#3197), To fix that I added below
>>>> in my config_local.py and it started working again,
>>>>

---

From: Khushboo Vashi <[email-masked]>
Date: Wed, 21 Mar 2018 20:30:57 +0530

On Wed, Mar 21, 2018 at 8:27 PM, Joao De Almeida Pereira <
[email-masked]> wrote:

> No I am saying, whatever you set as a DEFAULT_SERVER,  the app can be
accessible with that server.
As, we have explicitly set  DOMAIN in the cookie setting.

---

From: Joao De Almeida Pereira <[email-masked]>
Date: Wed, 21 Mar 2018 15:57:35 +0000

Sorry I did not understand what you said.
This configuration:

DEFAULT_SERVER = '0.0.0.0'
SESSION_COOKIE_DOMAIN = DEFAULT_SERVER
COOKIE_DEFAULT_DOMAIN = DEFAULT_SERVER

If the application lives in the domain pgadmin.somedomain.com do I need to
have in config_local:
DEFAULT_SERVER = '0.0.0.0'
SESSION_COOKIE_DOMAIN = 'pgadmin.somedomain.com'
COOKIE_DEFAULT_DOMAIN = 'pgadmin.somedomain.com'
?

Does this mean that if for some reason I have a second domain like
pgadmin.somedomain2.com that I want to use I cannot?

The issue of 127.0.0.1 to localhost is very cumbersome, and somehow we
should be able to disable this, because when we are developing doesn't make
sense to not being able to use localhost and 127.0.0.1

Thanks
Joao
On Wed, Mar 21, 2018 at 11:01 AM Khushboo Vashi <

---

From: Dave Page <[email-masked]>
Date: Wed, 21 Mar 2018 16:01:14 +0000

On Wed, Mar 21, 2018 at 3:57 PM, Joao De Almeida Pereira <
[email-masked]> wrote:

> If the application lives in the domain pgadmin.somedomain.com do I need
> to have in config_local:

+1. I didn't realise we'd added this restriction when I tested the patch.

Perhaps a better approach would be to leave the default cookie handling as
it was, and just expose the domain and path via config options that the
user can set if appropriate for their installation.

>>>>> Now my question is I have the default server to 127.0.0.1 and I want
>>>>> to access it using localhost as well. How can I do this?
>>>>>
>>>>> No, you can't.
>>>>>>> Yes, that's cookie related issue (RM#3197), To fix that I added
>>>>>>> below in my config_local.py and it started working again,
>>>>>>>

---

From: Joao De Almeida Pereira <[email-masked]>
Date: Wed, 21 Mar 2018 16:30:15 +0000

Another thing when I do this configuration:

DEFAULT_SERVER = '127.0.0.1'
SESSION_COOKIE_DOMAIN = 'localhost'
COOKIE_DEFAULT_DOMAIN = 'localhost'

I get the following exception:
builtins.ValueError

ValueError: Setting 'domain' for a cookie on a server running localy (ex:
localhost) is not supportted by complying browsers. You should have
something like: '127.0.0.1 localhost dev.localhost' on your hosts file and
then point your server to run on 'dev.localhost' and also set 'domain' for
'dev.localhost'
And if you follow the instructions and change the hosts file it allows you
to start the application but when you try to open a database server you
will get the 428 error
Thanks
Joao

---

From: Khushboo Vashi <[email-masked]>
Date: Thu, 22 Mar 2018 08:27:03 +0530

On Wed, Mar 21, 2018 at 10:00 PM, Joao De Almeida Pereira <
[email-masked]> wrote:

> Right, many browser doesn't support localhost as a cookie domain.
The settings you did is not correct, your cookie will be stored as a
'localhost' domain and you trying to run the app as 127.0.0.1.
If we set a domain for the cookie than either that domain or sub-domains
can access that cookie.

In regards to your question of 2 domain names, this type of situation
arrives when any site is configured explicitly to divide the load. In case
of pgAdmin 4, this is not going to happen :).
It is always recommend to use cookie with domain settings, but as Dave
suggested we can leave that upto user. So, we will make it configurable and
user will decide to have it or not.

>> Perhaps a better approach would be to leave the default cookie handling
>> as it was, and just expose the domain and path via config options that the
>>>>>>>>>>> Check your config.py and config_local.py if you have done
>>>>>>>>>>> changes related to DEFAULT_SERVER in your config_local.py then you need to
>>>>>>>>>>> change other 2 cookie related variables also.
>>>>>>>>>>>
>>>>>>>>>>> Thanks
>>>>>>>>>>> Joao
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>
>>
>> --
>> Dave Page

---

From: Khushboo Vashi <[email-masked]>
Date: Fri, 23 Mar 2018 11:47:23 +0530

Hi,

On Wed, Mar 21, 2018 at 9:31 PM, Dave Page <[email-masked]> wrote:

> Please find the attached updated patch as discussed.

If one has to set cookie domain and path then below *config variables*
should be changed.

COOKIE_DEFAULT_PATH
COOKIE_DEFAULT_DOMAIN
SESSION_COOKIE_DOMAIN

Thanks,
Khushboo

>>>>>>>> Clear your browser cookies and server side sessions.
diff --git a/web/config.py b/web/config.py
index 926a87b..ed28438 100644
--- a/web/config.py
+++ b/web/config.py
@@ -252,7 +252,6 @@ SESSION_DB_PATH = os.path.join(DATA_DIR, 'sessions')
 
 SESSION_COOKIE_NAME = 'pga4_session'
 
-SESSION_COOKIE_DOMAIN = DEFAULT_SERVER
 ##########################################################################
 # Mail server settings
 ##########################################################################
@@ -361,8 +360,8 @@ SHOW_GRAVATAR_IMAGE = True
 # Set cookie path
 ##########################################################################
 COOKIE_DEFAULT_PATH = '/'
-COOKIE_DEFAULT_DOMAIN = DEFAULT_SERVER
-
+COOKIE_DEFAULT_DOMAIN = None
+SESSION_COOKIE_DOMAIN = None
 ##########################################################################
 # Local config settings
 ##########################################################################
diff --git a/web/pgadmin/__init__.py b/web/pgadmin/__init__.py
index 2f27d07..4e57abf 100644
--- a/web/pgadmin/__init__.py
+++ b/web/pgadmin/__init__.py
@@ -541,13 +541,6 @@ def create_app(app_name=None):
         app.logger.info('Registering blueprint module: %s' % module)
         app.register_blueprint(module)
 
-    #########################################################################
-    # Set cookie path
-    #########################################################################
-    @app.before_first_request
-    def before_first_request():
-        from pgadmin.utils.paths import get_cookie_path
-        config.COOKIE_DEFAULT_PATH = get_cookie_path()
 
     ##########################################################################
     # Handle the desktop login
@@ -586,7 +579,8 @@ def create_app(app_name=None):
     def after_request(response):
         if 'key' in request.args:
             domain = dict()
-            if config.COOKIE_DEFAULT_DOMAIN != 'localhost':
+            if config.COOKIE_DEFAULT_DOMAIN and\
+                    config.COOKIE_DEFAULT_DOMAIN != 'localhost':
                 domain['domain'] = config.COOKIE_DEFAULT_DOMAIN
             response.set_cookie('PGADMIN_KEY', value=request.args['key'],
                                 path=config.COOKIE_DEFAULT_PATH,
diff --git a/web/pgadmin/browser/__init__.py b/web/pgadmin/browser/__init__.py
index 34d0c86..724e677 100644
--- a/web/pgadmin/browser/__init__.py
+++ b/web/pgadmin/browser/__init__.py
@@ -799,7 +799,8 @@ def index():
         language = user_languages.get() or 'en'
 
     domain = dict()
-    if config.COOKIE_DEFAULT_DOMAIN != 'localhost':
+    if config.COOKIE_DEFAULT_DOMAIN and\
+            config.COOKIE_DEFAULT_DOMAIN != 'localhost':
         domain['domain'] = config.COOKIE_DEFAULT_DOMAIN
 
     response.set_cookie("PGADMIN_LANGUAGE", value=language,
diff --git a/web/pgadmin/preferences/__init__.py b/web/pgadmin/preferences/__init__.py
index 9c14cc2..6358841 100644
--- a/web/pgadmin/preferences/__init__.py
+++ b/web/pgadmin/preferences/__init__.py
@@ -200,7 +200,8 @@ def save(pid):
         language = user_languages.get() or language
 
     domain = dict()
-    if config.COOKIE_DEFAULT_DOMAIN != 'localhost':
+    if config.COOKIE_DEFAULT_DOMAIN and\
+            config.COOKIE_DEFAULT_DOMAIN != 'localhost':
         domain['domain'] = config.COOKIE_DEFAULT_DOMAIN
 
     setattr(session, 'PGADMIN_LANGUAGE', language)

---

From: Dave Page <[email-masked]>
Date: Fri, 23 Mar 2018 10:14:27 +0000

> If one has to set cookie domain and path then below *config variables*

Thanks, applied.