public inbox for [email protected]  
help / color / mirror / Atom feed
[pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers
8+ messages / 3 participants
[nested] [flat]

* [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers
@ 2018-03-14 05:33 Khushboo Vashi <[email protected]>
  2018-03-14 07:09 ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Murtuza Zabuawala <[email protected]>
  0 siblings, 1 reply; 8+ messages in thread

From: Khushboo Vashi @ 2018-03-14 05:33 UTC (permalink / raw)
  To: pgadmin-hackers

Hi,

Please find the attached patch to fix RM #3122 : Backup not working on
certificate (SSL) protected servers.

The attached patch fixes the issue in the following modules:

1. Backup
2. Restore
3. Import/Export
4. Maintenance

Thanks,
Khushboo


Attachments:

  [text/x-patch] RM_3122.patch (9.1K, 3-RM_3122.patch)
  download | inline diff:
diff --git a/web/migrations/versions/12958d9f4970_.py b/web/migrations/versions/12958d9f4970_.py
new file mode 100644
index 0000000..aa2c5fd
--- /dev/null
+++ b/web/migrations/versions/12958d9f4970_.py
@@ -0,0 +1,33 @@
+##########################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2018, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+##########################################################################
+"""
+Add SSL support for batch processes (RM #3122)
+
+Revision ID: 12958d9f4970
+Revises: 50aad68f99c2
+Create Date: 2018-03-13 21:21:25.455315
+
+"""
+from pgadmin.model import db
+
+# revision identifiers, used by Alembic.
+revision = '12958d9f4970'
+down_revision = '50aad68f99c2'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    db.engine.execute(
+        'ALTER TABLE process ADD COLUMN ssl TEXT'
+    )
+
+
+def downgrade():
+    pass
diff --git a/web/pgadmin/misc/bgprocess/processes.py b/web/pgadmin/misc/bgprocess/processes.py
index c456b4f..4a6e60a 100644
--- a/web/pgadmin/misc/bgprocess/processes.py
+++ b/web/pgadmin/misc/bgprocess/processes.py
@@ -19,7 +19,8 @@ from datetime import datetime
 from pickle import dumps, loads
 from subprocess import Popen
 
-from pgadmin.utils import IS_PY2, u, file_quote, fs_encoding
+from pgadmin.utils import IS_PY2, u, file_quote, fs_encoding, \
+    get_complete_file_path
 
 import pytz
 from dateutil import parser
@@ -61,13 +62,14 @@ class BatchProcess(object):
 
         self.id = self.desc = self.cmd = self.args = self.log_dir = \
             self.stdout = self.stderr = self.stime = self.etime = \
-            self.ecode = None
+            self.ecode = self.ssl = None
 
         if 'id' in kwargs:
             self._retrieve_process(kwargs['id'])
         else:
+            ssl = kwargs.get('ssl', None)
             self._create_process(
-                kwargs['desc'], kwargs['cmd'], kwargs['args']
+                kwargs['desc'], kwargs['cmd'], kwargs['args'], ssl
             )
 
     def _retrieve_process(self, _id):
@@ -110,8 +112,10 @@ class BatchProcess(object):
         self.etime = p.end_time
         # Exit code
         self.ecode = p.exit_code
+        # SSL
+        self.ssl = p.ssl
 
-    def _create_process(self, _desc, _cmd, _args):
+    def _create_process(self, _desc, _cmd, _args, ssl):
         ctime = get_current_time(format='%y%m%d%H%M%S%f')
         log_dir = os.path.join(
             config.SESSION_DB_PATH, 'process_logs'
@@ -163,6 +167,8 @@ class BatchProcess(object):
         self.etime = None
         # Exit code
         self.ecode = None
+        # SSL
+        self.ssl = dumps(ssl)
 
         # Arguments
         self.args = _args
@@ -199,7 +205,8 @@ class BatchProcess(object):
             if IS_PY2 and hasattr(args_val, 'decode') else args_val,
             logdir=log_dir,
             desc=tmp_desc,
-            user_id=current_user.id
+            user_id=current_user.id,
+            ssl=self.ssl
         )
         db.session.add(j)
         db.session.commit()
@@ -330,6 +337,20 @@ class BatchProcess(object):
         env['OUTDIR'] = self.log_dir
         env['PGA_BGP_FOREGROUND'] = "1"
 
+        # Set environment variable for SSL
+        ssl = loads(self.ssl)
+        if ssl and isinstance(ssl, dict):
+            ssl_mode = ssl.get('ssl_mode', None)
+            sslcert = ssl.get('sslcert', None)
+            sslkey = ssl.get('sslkey', None)
+            sslrootcert = ssl.get('sslrootcert', None)
+
+            if ssl_mode and sslcert and sslkey and sslrootcert:
+                env['PGSSLMODE'] = ssl_mode
+                env['PGSSLCERT'] = get_complete_file_path(sslcert)
+                env['PGSSLKEY'] = get_complete_file_path(sslkey)
+                env['PGSSLROOTCERT'] = get_complete_file_path(sslrootcert)
+
         if cb is not None:
             cb(env)
 
diff --git a/web/pgadmin/model/__init__.py b/web/pgadmin/model/__init__.py
index 11bc9f0..8a3f96f 100644
--- a/web/pgadmin/model/__init__.py
+++ b/web/pgadmin/model/__init__.py
@@ -238,6 +238,7 @@ class Process(db.Model):
     end_time = db.Column(db.String(), nullable=True)
     exit_code = db.Column(db.Integer(), nullable=True)
     acknowledge = db.Column(db.String(), nullable=True)
+    ssl = db.Column(db.String(), nullable=True)
 
 
 class Keys(db.Model):
diff --git a/web/pgadmin/tools/backup/__init__.py b/web/pgadmin/tools/backup/__init__.py
index 940ef5b..efb9767 100644
--- a/web/pgadmin/tools/backup/__init__.py
+++ b/web/pgadmin/tools/backup/__init__.py
@@ -300,6 +300,7 @@ def create_backup_job(sid):
         '--database',
         server.maintenance_db
     ]
+
     if 'role' in data and data['role']:
         args.append('--role')
         args.append(data['role'])
@@ -310,6 +311,16 @@ def create_backup_job(sid):
     if data['type'] == 'global':
         args.append('--globals-only')
 
+    # SSL
+    ssl = {}
+    if server.sslcert is not None and \
+            server.sslkey is not None and \
+            server.sslrootcert is not None:
+        ssl['ssl_mode'] = server.ssl_mode
+        ssl['sslcert'] = server.sslcert
+        ssl['sslkey'] = server.sslkey
+        ssl['sslrootcert'] = server.sslrootcert
+
     try:
         p = BatchProcess(
             desc=BackupMessage(
@@ -320,7 +331,7 @@ def create_backup_job(sid):
                 ) else data['file'],
                 *args
             ),
-            cmd=utility, args=args
+            cmd=utility, args=args, ssl=ssl
         )
         manager.export_password_env(p.id)
         p.start()
@@ -473,6 +484,16 @@ def create_backup_objects_job(sid):
 
     args.append(data['database'])
 
+    # SSL
+    ssl = {}
+    if server.sslcert is not None and \
+            server.sslkey is not None and \
+            server.sslrootcert is not None:
+        ssl['ssl_mode'] = server.ssl_mode
+        ssl['sslcert'] = server.sslcert
+        ssl['sslkey'] = server.sslkey
+        ssl['sslrootcert'] = server.sslrootcert
+
     try:
         p = BatchProcess(
             desc=BackupMessage(
@@ -483,7 +504,7 @@ def create_backup_objects_job(sid):
                 *args,
                 database=data['database']
             ),
-            cmd=utility, args=args
+            cmd=utility, args=args, ssl=ssl
         )
         manager.export_password_env(p.id)
         p.start()
diff --git a/web/pgadmin/tools/import_export/__init__.py b/web/pgadmin/tools/import_export/__init__.py
index 3f83fd4..0ad23f0 100644
--- a/web/pgadmin/tools/import_export/__init__.py
+++ b/web/pgadmin/tools/import_export/__init__.py
@@ -293,6 +293,16 @@ def create_import_export_job(sid):
 
     args = ['--command', query]
 
+    # SSL
+    ssl = {}
+    if server.sslcert is not None and \
+            server.sslkey is not None and \
+            server.sslrootcert is not None:
+        ssl['ssl_mode'] = server.ssl_mode
+        ssl['sslcert'] = server.sslcert
+        ssl['sslkey'] = server.sslkey
+        ssl['sslrootcert'] = server.sslrootcert
+
     try:
         p = BatchProcess(
             desc=IEMessage(
@@ -303,7 +313,8 @@ def create_import_export_job(sid):
                 storage_dir,
                 utility, *args
             ),
-            cmd=utility, args=args
+            cmd=utility, args=args,
+            ssl=ssl
         )
         manager.export_password_env(p.id)
 
diff --git a/web/pgadmin/tools/maintenance/__init__.py b/web/pgadmin/tools/maintenance/__init__.py
index 8416a20..cfdabf0 100644
--- a/web/pgadmin/tools/maintenance/__init__.py
+++ b/web/pgadmin/tools/maintenance/__init__.py
@@ -230,10 +230,21 @@ def create_maintenance_job(sid, did):
         '--command', query
     ]
 
+    # SSL
+    ssl = {}
+    if server.sslcert is not None and \
+            server.sslkey is not None and \
+            server.sslrootcert is not None:
+        ssl['ssl_mode'] = server.ssl_mode
+        ssl['sslcert'] = server.sslcert
+        ssl['sslkey'] = server.sslkey
+        ssl['sslrootcert'] = server.sslrootcert
+
     try:
         p = BatchProcess(
             desc=Message(sid, data, query),
-            cmd=utility, args=args
+            cmd=utility, args=args,
+            ssl=ssl
         )
         manager.export_password_env(p.id)
         p.start()
diff --git a/web/pgadmin/tools/restore/__init__.py b/web/pgadmin/tools/restore/__init__.py
index 6afa7b4..1865419 100644
--- a/web/pgadmin/tools/restore/__init__.py
+++ b/web/pgadmin/tools/restore/__init__.py
@@ -317,6 +317,16 @@ def create_restore_job(sid):
 
     args.append(fs_short_path(_file))
 
+    # SSL
+    ssl = {}
+    if server.sslcert is not None and \
+            server.sslkey is not None and \
+            server.sslrootcert is not None:
+        ssl['ssl_mode'] = server.ssl_mode
+        ssl['sslcert'] = server.sslcert
+        ssl['sslkey'] = server.sslkey
+        ssl['sslrootcert'] = server.sslrootcert
+
     try:
         p = BatchProcess(
             desc=RestoreMessage(
@@ -326,7 +336,8 @@ def create_restore_job(sid):
                 ) else data['file'],
                 *args
             ),
-            cmd=utility, args=args
+            cmd=utility, args=args,
+            ssl=ssl
         )
         manager.export_password_env(p.id)
         p.start()


^ permalink  raw  reply  [nested|flat] 8+ messages in thread

* Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers
  2018-03-14 05:33 [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
@ 2018-03-14 07:09 ` Murtuza Zabuawala <[email protected]>
  2018-03-14 07:18   ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Murtuza Zabuawala <[email protected]>
  0 siblings, 1 reply; 8+ messages in thread

From: Murtuza Zabuawala @ 2018-03-14 07:09 UTC (permalink / raw)
  To: Khushboo Vashi <[email protected]>; +Cc: pgadmin-hackers

Hi Khushboo,

We can simplify this, we don't need to create any extra column,

Check: ../pgadmin4/web/pgadmin/tools/import_export/__init__.py +322 where
we are setting ENV variable we can create common utility function (let say
in ../tools/utils/__init__.py) which will set all required the environment
variables and then we will pass that function in p.start(..) method.


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


On Wed, Mar 14, 2018 at 11:03 AM, Khushboo Vashi <
[email protected]> wrote:

> Hi,
>
> Please find the attached patch to fix RM #3122 : Backup not working on
> certificate (SSL) protected servers.
>
> The attached patch fixes the issue in the following modules:
>
> 1. Backup
> 2. Restore
> 3. Import/Export
> 4. Maintenance
>
> Thanks,
> Khushboo
>
>
>


^ permalink  raw  reply  [nested|flat] 8+ messages in thread

* Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers
  2018-03-14 05:33 [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
  2018-03-14 07:09 ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Murtuza Zabuawala <[email protected]>
@ 2018-03-14 07:18   ` Murtuza Zabuawala <[email protected]>
  2018-03-14 07:37     ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
  0 siblings, 1 reply; 8+ messages in thread

From: Murtuza Zabuawala @ 2018-03-14 07:18 UTC (permalink / raw)
  To: Khushboo Vashi <[email protected]>; +Cc: pgadmin-hackers

 ../pgadmin4/web/pgadmin/tools/import_export/__init__.py +310 without your
patch applied.


On Wed, Mar 14, 2018 at 12:39 PM, Murtuza Zabuawala <
[email protected]> wrote:

> Hi Khushboo,
>
> We can simplify this, we don't need to create any extra column,
>
> Check: ../pgadmin4/web/pgadmin/tools/import_export/__init__.py +322 where
> we are setting ENV variable we can create common utility function (let say
> in ../tools/utils/__init__.py) which will set all required the environment
> variables and then we will pass that function in p.start(..) method.
>
>
> --
> Regards,
> Murtuza Zabuawala
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
>
> On Wed, Mar 14, 2018 at 11:03 AM, Khushboo Vashi <
> [email protected]> wrote:
>
>> Hi,
>>
>> Please find the attached patch to fix RM #3122 : Backup not working on
>> certificate (SSL) protected servers.
>>
>> The attached patch fixes the issue in the following modules:
>>
>> 1. Backup
>> 2. Restore
>> 3. Import/Export
>> 4. Maintenance
>>
>> Thanks,
>> Khushboo
>>
>>
>>
>


^ permalink  raw  reply  [nested|flat] 8+ messages in thread

* Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers
  2018-03-14 05:33 [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
  2018-03-14 07:09 ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Murtuza Zabuawala <[email protected]>
  2018-03-14 07:18   ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Murtuza Zabuawala <[email protected]>
@ 2018-03-14 07:37     ` Khushboo Vashi <[email protected]>
  2018-03-14 14:55       ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
  0 siblings, 1 reply; 8+ messages in thread

From: Khushboo Vashi @ 2018-03-14 07:37 UTC (permalink / raw)
  To: Murtuza Zabuawala <[email protected]>; +Cc: pgadmin-hackers

On Wed, Mar 14, 2018 at 12:48 PM, Murtuza Zabuawala <
[email protected]> wrote:

>  ../pgadmin4/web/pgadmin/tools/import_export/__init__.py +310 without
> your patch applied.
>
> Yes, good point. Will update and send the patch.

>
> On Wed, Mar 14, 2018 at 12:39 PM, Murtuza Zabuawala <murtuza.zabuawala@
> enterprisedb.com> wrote:
>
>> Hi Khushboo,
>>
>> We can simplify this, we don't need to create any extra column,
>>
>> Check: ../pgadmin4/web/pgadmin/tools/import_export/__init__.py +322
>> where we are setting ENV variable we can create common utility function
>> (let say in ../tools/utils/__init__.py) which will set all required the
>> environment variables and then we will pass that function in p.start(..)
>> method.
>>
>>
>> --
>> Regards,
>> Murtuza Zabuawala
>> EnterpriseDB: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>>
>> On Wed, Mar 14, 2018 at 11:03 AM, Khushboo Vashi <
>> [email protected]> wrote:
>>
>>> Hi,
>>>
>>> Please find the attached patch to fix RM #3122 : Backup not working on
>>> certificate (SSL) protected servers.
>>>
>>> The attached patch fixes the issue in the following modules:
>>>
>>> 1. Backup
>>> 2. Restore
>>> 3. Import/Export
>>> 4. Maintenance
>>>
>>> Thanks,
>>> Khushboo
>>>
>>>
>>>
>>
>


^ permalink  raw  reply  [nested|flat] 8+ messages in thread

* Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers
  2018-03-14 05:33 [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
  2018-03-14 07:09 ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Murtuza Zabuawala <[email protected]>
  2018-03-14 07:18   ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Murtuza Zabuawala <[email protected]>
  2018-03-14 07:37     ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
@ 2018-03-14 14:55       ` Khushboo Vashi <[email protected]>
  2018-03-14 21:51         ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Dave Page <[email protected]>
  0 siblings, 1 reply; 8+ messages in thread

From: Khushboo Vashi @ 2018-03-14 14:55 UTC (permalink / raw)
  To: Murtuza Zabuawala <[email protected]>; +Cc: pgadmin-hackers

Hi,

Please find the attached updated patch.

Thanks,
Khushboo

On Wed, Mar 14, 2018 at 1:07 PM, Khushboo Vashi <
[email protected]> wrote:

>
>
> On Wed, Mar 14, 2018 at 12:48 PM, Murtuza Zabuawala <murtuza.zabuawala@
> enterprisedb.com> wrote:
>
>>  ../pgadmin4/web/pgadmin/tools/import_export/__init__.py +310 without
>> your patch applied.
>>
>> Yes, good point. Will update and send the patch.
>
>>
>> On Wed, Mar 14, 2018 at 12:39 PM, Murtuza Zabuawala <
>> [email protected]> wrote:
>>
>>> Hi Khushboo,
>>>
>>> We can simplify this, we don't need to create any extra column,
>>>
>>> Check: ../pgadmin4/web/pgadmin/tools/import_export/__init__.py +322
>>> where we are setting ENV variable we can create common utility function
>>> (let say in ../tools/utils/__init__.py) which will set all required the
>>> environment variables and then we will pass that function in p.start(..)
>>> method.
>>>
>>>
>>> --
>>> Regards,
>>> Murtuza Zabuawala
>>> EnterpriseDB: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>>
>>> On Wed, Mar 14, 2018 at 11:03 AM, Khushboo Vashi <
>>> [email protected]> wrote:
>>>
>>>> Hi,
>>>>
>>>> Please find the attached patch to fix RM #3122 : Backup not working on
>>>> certificate (SSL) protected servers.
>>>>
>>>> The attached patch fixes the issue in the following modules:
>>>>
>>>> 1. Backup
>>>> 2. Restore
>>>> 3. Import/Export
>>>> 4. Maintenance
>>>>
>>>> Thanks,
>>>> Khushboo
>>>>
>>>>
>>>>
>>>
>>
>


Attachments:

  [text/x-patch] RM_3122_ver1.patch (4.6K, 3-RM_3122_ver1.patch)
  download | inline diff:
diff --git a/web/pgadmin/misc/bgprocess/processes.py b/web/pgadmin/misc/bgprocess/processes.py
index c456b4f..cefb51a 100644
--- a/web/pgadmin/misc/bgprocess/processes.py
+++ b/web/pgadmin/misc/bgprocess/processes.py
@@ -19,7 +19,8 @@ from datetime import datetime
 from pickle import dumps, loads
 from subprocess import Popen
 
-from pgadmin.utils import IS_PY2, u, file_quote, fs_encoding
+from pgadmin.utils import IS_PY2, u, file_quote, fs_encoding, \
+    get_complete_file_path
 
 import pytz
 from dateutil import parser
@@ -62,6 +63,7 @@ class BatchProcess(object):
         self.id = self.desc = self.cmd = self.args = self.log_dir = \
             self.stdout = self.stderr = self.stime = self.etime = \
             self.ecode = None
+        self.env = dict()
 
         if 'id' in kwargs:
             self._retrieve_process(kwargs['id'])
@@ -330,6 +332,9 @@ class BatchProcess(object):
         env['OUTDIR'] = self.log_dir
         env['PGA_BGP_FOREGROUND'] = "1"
 
+        if self.env:
+            env.update(self.env)
+
         if cb is not None:
             cb(env)
 
@@ -622,3 +627,18 @@ class BatchProcess(object):
             p.acknowledge = get_current_time()
 
         db.session.commit()
+
+    def set_env_variables(self, server, **kwargs):
+        """Set environment variables"""
+        if server and server.sslcert is not None and \
+                server.sslkey is not None and \
+                server.sslrootcert is not None:
+            # SSL environment variables
+            self.env['PGSSLMODE'] = server.ssl_mode
+            self.env['PGSSLCERT'] = get_complete_file_path(server.sslcert)
+            self.env['PGSSLKEY'] = get_complete_file_path(server.sslkey)
+            self.env['PGSSLROOTCERT'] = \
+                get_complete_file_path(server.sslrootcert)
+
+        if 'env' in kwargs:
+            self.env.update(kwargs['env'])
diff --git a/web/pgadmin/tools/backup/__init__.py b/web/pgadmin/tools/backup/__init__.py
index 940ef5b..8936e53 100644
--- a/web/pgadmin/tools/backup/__init__.py
+++ b/web/pgadmin/tools/backup/__init__.py
@@ -300,6 +300,7 @@ def create_backup_job(sid):
         '--database',
         server.maintenance_db
     ]
+
     if 'role' in data and data['role']:
         args.append('--role')
         args.append(data['role'])
@@ -323,6 +324,7 @@ def create_backup_job(sid):
             cmd=utility, args=args
         )
         manager.export_password_env(p.id)
+        p.set_env_variables(server)
         p.start()
         jid = p.id
     except Exception as e:
@@ -486,6 +488,7 @@ def create_backup_objects_job(sid):
             cmd=utility, args=args
         )
         manager.export_password_env(p.id)
+        p.set_env_variables(server)
         p.start()
         jid = p.id
     except Exception as e:
diff --git a/web/pgadmin/tools/import_export/__init__.py b/web/pgadmin/tools/import_export/__init__.py
index 3f83fd4..9690475 100644
--- a/web/pgadmin/tools/import_export/__init__.py
+++ b/web/pgadmin/tools/import_export/__init__.py
@@ -307,13 +307,13 @@ def create_import_export_job(sid):
         )
         manager.export_password_env(p.id)
 
-        def export_pg_env(env):
-            env['PGHOST'] = server.host
-            env['PGPORT'] = str(server.port)
-            env['PGUSER'] = server.username
-            env['PGDATABASE'] = data['database']
-
-        p.start(export_pg_env)
+        env = dict()
+        env['PGHOST'] = server.host
+        env['PGPORT'] = str(server.port)
+        env['PGUSER'] = server.username
+        env['PGDATABASE'] = data['database']
+        p.set_env_variables(server, env=env)
+        p.start()
         jid = p.id
     except Exception as e:
         current_app.logger.exception(e)
diff --git a/web/pgadmin/tools/maintenance/__init__.py b/web/pgadmin/tools/maintenance/__init__.py
index 8416a20..088922b 100644
--- a/web/pgadmin/tools/maintenance/__init__.py
+++ b/web/pgadmin/tools/maintenance/__init__.py
@@ -236,6 +236,7 @@ def create_maintenance_job(sid, did):
             cmd=utility, args=args
         )
         manager.export_password_env(p.id)
+        p.set_env_variables(server)
         p.start()
         jid = p.id
     except Exception as e:
diff --git a/web/pgadmin/tools/restore/__init__.py b/web/pgadmin/tools/restore/__init__.py
index 6afa7b4..db1d522 100644
--- a/web/pgadmin/tools/restore/__init__.py
+++ b/web/pgadmin/tools/restore/__init__.py
@@ -329,6 +329,7 @@ def create_restore_job(sid):
             cmd=utility, args=args
         )
         manager.export_password_env(p.id)
+        p.set_env_variables(server)
         p.start()
         jid = p.id
     except Exception as e:


^ permalink  raw  reply  [nested|flat] 8+ messages in thread

* Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers
  2018-03-14 05:33 [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
  2018-03-14 07:09 ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Murtuza Zabuawala <[email protected]>
  2018-03-14 07:18   ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Murtuza Zabuawala <[email protected]>
  2018-03-14 07:37     ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
  2018-03-14 14:55       ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
@ 2018-03-14 21:51         ` Dave Page <[email protected]>
  2018-03-15 04:55           ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
  0 siblings, 1 reply; 8+ messages in thread

From: Dave Page @ 2018-03-14 21:51 UTC (permalink / raw)
  To: Khushboo Vashi <[email protected]>; +Cc: Murtuza Zabuawala <[email protected]>; pgadmin-hackers

Hi

On Wed, Mar 14, 2018 at 10:55 AM, Khushboo Vashi <
[email protected]> wrote:

> Hi,
>
> Please find the attached updated patch.
>

Can you add a unit test for set_env_variables() please?


>
> Thanks,
> Khushboo
>
> On Wed, Mar 14, 2018 at 1:07 PM, Khushboo Vashi <
> [email protected]> wrote:
>
>>
>>
>> On Wed, Mar 14, 2018 at 12:48 PM, Murtuza Zabuawala <
>> [email protected]> wrote:
>>
>>>  ../pgadmin4/web/pgadmin/tools/import_export/__init__.py +310 without
>>> your patch applied.
>>>
>>> Yes, good point. Will update and send the patch.
>>
>>>
>>> On Wed, Mar 14, 2018 at 12:39 PM, Murtuza Zabuawala <
>>> [email protected]> wrote:
>>>
>>>> Hi Khushboo,
>>>>
>>>> We can simplify this, we don't need to create any extra column,
>>>>
>>>> Check: ../pgadmin4/web/pgadmin/tools/import_export/__init__.py +322
>>>> where we are setting ENV variable we can create common utility function
>>>> (let say in ../tools/utils/__init__.py) which will set all required the
>>>> environment variables and then we will pass that function in p.start(..)
>>>> method.
>>>>
>>>>
>>>> --
>>>> Regards,
>>>> Murtuza Zabuawala
>>>> EnterpriseDB: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>>
>>>> On Wed, Mar 14, 2018 at 11:03 AM, Khushboo Vashi <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Please find the attached patch to fix RM #3122 : Backup not working on
>>>>> certificate (SSL) protected servers.
>>>>>
>>>>> The attached patch fixes the issue in the following modules:
>>>>>
>>>>> 1. Backup
>>>>> 2. Restore
>>>>> 3. Import/Export
>>>>> 4. Maintenance
>>>>>
>>>>> Thanks,
>>>>> Khushboo
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>


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

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


^ permalink  raw  reply  [nested|flat] 8+ messages in thread

* Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers
  2018-03-14 05:33 [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
  2018-03-14 07:09 ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Murtuza Zabuawala <[email protected]>
  2018-03-14 07:18   ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Murtuza Zabuawala <[email protected]>
  2018-03-14 07:37     ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
  2018-03-14 14:55       ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
  2018-03-14 21:51         ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Dave Page <[email protected]>
@ 2018-03-15 04:55           ` Khushboo Vashi <[email protected]>
  2018-03-15 11:37             ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Dave Page <[email protected]>
  0 siblings, 1 reply; 8+ messages in thread

From: Khushboo Vashi @ 2018-03-15 04:55 UTC (permalink / raw)
  To: Dave Page <[email protected]>; +Cc: Murtuza Zabuawala <[email protected]>; pgadmin-hackers

On Thu, Mar 15, 2018 at 3:21 AM, Dave Page <[email protected]> wrote:

> Hi
>
> On Wed, Mar 14, 2018 at 10:55 AM, Khushboo Vashi <
> [email protected]> wrote:
>
>> Hi,
>>
>> Please find the attached updated patch.
>>
>
> Can you add a unit test for set_env_variables() please?
>
>
This function is a part of a BatchProcess class which is used by all
backup/restore/maintenance etc modules. So, when we write test cases for
this module this function will be covered.
I had already created RM for the same (Ref:
https://redmine.postgresql.org/issues/3206) and it is in the current sprint.

>
>> Thanks,
>> Khushboo
>>
>> On Wed, Mar 14, 2018 at 1:07 PM, Khushboo Vashi <
>> [email protected]> wrote:
>>
>>>
>>>
>>> On Wed, Mar 14, 2018 at 12:48 PM, Murtuza Zabuawala <
>>> [email protected]> wrote:
>>>
>>>>  ../pgadmin4/web/pgadmin/tools/import_export/__init__.py +310 without
>>>> your patch applied.
>>>>
>>>> Yes, good point. Will update and send the patch.
>>>
>>>>
>>>> On Wed, Mar 14, 2018 at 12:39 PM, Murtuza Zabuawala <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Khushboo,
>>>>>
>>>>> We can simplify this, we don't need to create any extra column,
>>>>>
>>>>> Check: ../pgadmin4/web/pgadmin/tools/import_export/__init__.py +322
>>>>> where we are setting ENV variable we can create common utility function
>>>>> (let say in ../tools/utils/__init__.py) which will set all required the
>>>>> environment variables and then we will pass that function in p.start(..)
>>>>> method.
>>>>>
>>>>>
>>>>> --
>>>>> Regards,
>>>>> Murtuza Zabuawala
>>>>> EnterpriseDB: http://www.enterprisedb.com
>>>>> The Enterprise PostgreSQL Company
>>>>>
>>>>>
>>>>> On Wed, Mar 14, 2018 at 11:03 AM, Khushboo Vashi <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> Please find the attached patch to fix RM #3122 : Backup not working
>>>>>> on certificate (SSL) protected servers.
>>>>>>
>>>>>> The attached patch fixes the issue in the following modules:
>>>>>>
>>>>>> 1. Backup
>>>>>> 2. Restore
>>>>>> 3. Import/Export
>>>>>> 4. Maintenance
>>>>>>
>>>>>> Thanks,
>>>>>> Khushboo
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>


^ permalink  raw  reply  [nested|flat] 8+ messages in thread

* Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers
  2018-03-14 05:33 [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
  2018-03-14 07:09 ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Murtuza Zabuawala <[email protected]>
  2018-03-14 07:18   ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Murtuza Zabuawala <[email protected]>
  2018-03-14 07:37     ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
  2018-03-14 14:55       ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
  2018-03-14 21:51         ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Dave Page <[email protected]>
  2018-03-15 04:55           ` Re: [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
@ 2018-03-15 11:37             ` Dave Page <[email protected]>
  0 siblings, 0 replies; 8+ messages in thread

From: Dave Page @ 2018-03-15 11:37 UTC (permalink / raw)
  To: Khushboo Vashi <[email protected]>; +Cc: Murtuza Zabuawala <[email protected]>; pgadmin-hackers

Hi

On Thu, Mar 15, 2018 at 12:55 AM, Khushboo Vashi <
[email protected]> wrote:

>
>
> On Thu, Mar 15, 2018 at 3:21 AM, Dave Page <[email protected]> wrote:
>
>> Hi
>>
>> On Wed, Mar 14, 2018 at 10:55 AM, Khushboo Vashi <
>> [email protected]> wrote:
>>
>>> Hi,
>>>
>>> Please find the attached updated patch.
>>>
>>
>> Can you add a unit test for set_env_variables() please?
>>
>>
> This function is a part of a BatchProcess class which is used by all
> backup/restore/maintenance etc modules. So, when we write test cases for
> this module this function will be covered.
> I had already created RM for the same (Ref: https://redmine.postgresql.
> org/issues/3206) and it is in the current sprint.
>

OK, thanks. Patch applied.


>
>>> Thanks,
>>> Khushboo
>>>
>>> On Wed, Mar 14, 2018 at 1:07 PM, Khushboo Vashi <
>>> [email protected]> wrote:
>>>
>>>>
>>>>
>>>> On Wed, Mar 14, 2018 at 12:48 PM, Murtuza Zabuawala <
>>>> [email protected]> wrote:
>>>>
>>>>>  ../pgadmin4/web/pgadmin/tools/import_export/__init__.py +310 without
>>>>> your patch applied.
>>>>>
>>>>> Yes, good point. Will update and send the patch.
>>>>
>>>>>
>>>>> On Wed, Mar 14, 2018 at 12:39 PM, Murtuza Zabuawala <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Khushboo,
>>>>>>
>>>>>> We can simplify this, we don't need to create any extra column,
>>>>>>
>>>>>> Check: ../pgadmin4/web/pgadmin/tools/import_export/__init__.py +322
>>>>>> where we are setting ENV variable we can create common utility function
>>>>>> (let say in ../tools/utils/__init__.py) which will set all required the
>>>>>> environment variables and then we will pass that function in p.start(..)
>>>>>> method.
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Regards,
>>>>>> Murtuza Zabuawala
>>>>>> EnterpriseDB: http://www.enterprisedb.com
>>>>>> The Enterprise PostgreSQL Company
>>>>>>
>>>>>>
>>>>>> On Wed, Mar 14, 2018 at 11:03 AM, Khushboo Vashi <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> Please find the attached patch to fix RM #3122 : Backup not working
>>>>>>> on certificate (SSL) protected servers.
>>>>>>>
>>>>>>> The attached patch fixes the issue in the following modules:
>>>>>>>
>>>>>>> 1. Backup
>>>>>>> 2. Restore
>>>>>>> 3. Import/Export
>>>>>>> 4. Maintenance
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Khushboo
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>>
>> --
>> 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


^ permalink  raw  reply  [nested|flat] 8+ messages in thread


end of thread, other threads:[~2018-03-15 11:37 UTC | newest]

Thread overview: 8+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2018-03-14 05:33 [pgadmin4][Patch]: RM #3122 - Backup not working on certificate (SSL) protected servers Khushboo Vashi <[email protected]>
2018-03-14 07:09 ` Murtuza Zabuawala <[email protected]>
2018-03-14 07:18   ` Murtuza Zabuawala <[email protected]>
2018-03-14 07:37     ` Khushboo Vashi <[email protected]>
2018-03-14 14:55       ` Khushboo Vashi <[email protected]>
2018-03-14 21:51         ` Dave Page <[email protected]>
2018-03-15 04:55           ` Khushboo Vashi <[email protected]>
2018-03-15 11:37             ` Dave Page <[email protected]>

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox